Ver Mensaje Individual
  #1  
Antiguo 25-05-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Reputación: 21
Faust Va por buen camino
¿cómo saber si un thread está vivo?

Saludos, tengo una aplicación en la que corro un thread, puedo pausarlo y continuarlo a gusto, incluso terminarlo y liberarlo, pero tengo el siguiente problema, al querer cerrar mi formulario principal necesito checar si el thread se está ejecutando o sigue vivo, es decir si se ha liberado o no,
este es el código:

Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Assigned(MThread) then
    if MessageDlg('Está corriendo el thread de copiado.' + #13#10 + '¿Desea cerrar de todas maneras la aplicación?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      MThread.Suspend;
      Sleep(3000);
      MThread.FPause:= True;
      CanClose:= True
    end
    else
      CanClose:= False
end;

Pero aunque el thread ha dejado de ejecutarse y su FreeOnTerminate:= True pareciera que se queda "vivo", pues Assigned(MThread) me devuelve verdadero, probé con MThread=nil y me devuelve falso... ¿algo estoy haciendo mal?

Gracias de antemano por su ayuda.

Nota: Alguien puede ayudarme a cambiar el título, es que es invertí las letras en saber y puse asber... gracias
__________________
Herr Heins Faust
Responder Con Cita