Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿cómo saber si un thread está vivo? (https://www.clubdelphi.com/foros/showthread.php?t=68117)

Faust 25-05-2010 19:37:52

¿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

roman 25-05-2010 20:07:30

En estos momentos no tengo a mano la ayuda de Delphi, pero creo que la clase TThread tiene un evento OnTerminate. Quizá ahí podrías aprovechar para poner en nil la variable que usas para referirte al Thread.

// Saludos

maeyanes 25-05-2010 20:20:57

Hola...

Así es Roman, la clase TThread tiene el mentado evento...


Saludos...

Faust 25-05-2010 20:22:11

Gracias amigos... voy a probar, crei que podría ser más complicado


La franja horaria es GMT +2. Ahora son las 13:17:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi