Ver Mensaje Individual
  #4  
Antiguo 23-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
luiggixD, Perdona pero no me parece inconsistente, de hecho lo utilizo para esperar a la terminación de un thread en un programa que estoy escribiendo y que debe esperar, solo que no uso WaitForSingleObject, que congela toda la aplicación, sino el sistema que he descrito. Es posible que no me explicase bien, de forma que amplio un poco tu código de ejemplo añadiendo mi idea:


Código:
void __fastcall TUnThread::Execute()
{
   Treminado = false; // Variable que añadimos como miembro a TUnThread


  //algun codigo si es q lo necesitas
  while(!Terminated) // agregas mas casos en los que puede terminar tu hilo
  {
  //codigo de lo que hace tu hilo
  }
  //si necesitas que se haga algo mas antes que el hilo termine



  Terminado = true; // Variable que añadimos como miembro a TUnThread
}
En la aplicación Codigo de espera a la terminación del thread:

Código:
Form1::Funcion(){
// Creamos el Thread y comienza la ejecución
.
.
.
// Ahora necesito esperar....
for(;!TUnThread->Terminado;){
    Application->ProcessMessages();   // Permite procesar mensajes y evitar la "congelación total" de la aplicación.
}
.
.
.
}
Durante la espera se pueden procesar mensajes y por lo tanto otros eventos, sólo se bloquea el código de la función que está esperando.


Saludos.
Responder Con Cita