Se me bloque el programa

01/06/2004 - 14:21 por sandra_soria81 | Informe spam
Bueno, pues sigo con mi aplicacion, os contare, estoy haciendo un
descargardor, para descargar archivos de forma directa, no tipo emule, ni
nada; Ya lo tengo avanzado, solo me faltan ponerlo bonito y una cosita que
me daba miedo pero ha llegado la hora de abordarlo, espero que me ayuden;
Vereis, mi aplicacion sdi, me abre una ventana u otra dependiendo de lo
que quiera descargar, un archivo concreto, todos los de una determinada
extension...etc; Me lo hace bien, pero cuando le doy a descargar, se me
bloquea hasta que acaba la descarga, por tanto no puedo hacer nada
mientras tanto; A que es debido??? Supongo que sera lo de los hilos, no???
No tengo ni idea de como funcionan los hilos, ni las funciones ni nada, si
es asi, me podeis guiar, hay alguna pagina???? Gracias por leerme, y si me
podeis ayudar decirme cualkier cosa, ke estoy muy perdida y cualkier cosa
me servira de orientacion;

Preguntas similare

Leer las respuestas

#6 Carlos Pérez Alonso
02/06/2004 - 15:46 | Informe spam
Como bien te decía Rodrigo, es un tema de hilos que tiene
comentado en su página de FAQs. He estado leyendo la FAQ y
está muy bien.

Básicamente te diré que cuando ejecutas un proceso, este
lanza un unico hilo de ejecución. Si estás descargando el
archivo es imposible que ese mismo hilo ejecute el
procedimiento de ventana de la ventana donde quieres
visualizar el progreso de descarga, y a la vez descargue
el archivo que deseas descargar Sincronamente.

Echale un ojo a la función

uintptr_t _beginthreadex(
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);

en la MSDN. Creo que vas a tener que meterte con el tema
de los hilos.

Un saludo.




Este es parte del codigo de la aplicacion, m_pPrincipal


es un puntero a la
clase base, y m_sEvolucionDescarga es donde quiero ver la


evolucion de la
descarga;

void CDescargarArchivo::OnDescargarArchivo()
{
...

m_pPrincipal->m_sEvolucionDescarga = "Direccion


Url Base: ";
m_pPrincipal->UpdateData(false);
m_pPrincipal->m_sEvolucionDescarga += Url;
m_pPrincipal->UpdateData(false);

CDialog::OnOK(); //para que se cierre la ventana y


se siga ejecutando la
funcion

AdaptarUrlBase(&UrlBase);
DescargarArchivo(Url, Directorio, Nombre);
}


void CDescargarArchivo::DescargarArchivo(char * pagina,


char * Directorio,
char * Nombre)
{
...

contenido = DescargarUrl(pagina, &error, &tamano);

m_pPrincipal->m_sEvolucionDescarga


+= "Guardando en el fichero";
m_pPrincipal->UpdateData(false);
m_pPrincipal->m_sEvolucionDescarga


+= "..";
m_pPrincipal->UpdateData(false);

/Abrimos el directorio donde queremos guardar el


archivo
strcat (Directorio,nombreoriginal);
pdir = fopen(Directorio,"wb");
}

Cuando pongo CDialog::OnOK(); se me cierra la ventana y


se sigue
ejecutando la descarga bien, pero no se me visualiza como


va escribiendo
en la caja de texto, ke es ese mi problema, una vez


terminada la descarga
si lo puedo ver; Pero yo quiero verlo al tiempo que se


esta efectuando la
descarga; De hilos no entiendo absolutamente nada;

.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida