Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
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
  #2  
Antiguo 25-05-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 25-05-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

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


Saludos...
Responder Con Cita
  #4  
Antiguo 25-05-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Gracias amigos... voy a probar, crei que podría ser más complicado
__________________
Herr Heins Faust
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo saber si un .OCX está instalado luisdevis API de Windows 2 22-09-2018 10:28:14
¿Cómo saber si una dll está registrada? jplj API de Windows 1 04-02-2010 23:28:41
Como saber si un puerto COM ya está en uso vejerf OOP 2 22-07-2008 16:58:47
Como saber si un evento esta programado xcostey OOP 2 17-01-2005 17:00:13
Como Saber Que Aplicacion Se Esta Ejecutando ??? TomasCampeon API de Windows 1 12-08-2004 03:23:26


La franja horaria es GMT +2. Ahora son las 15:33:34.


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
Copyright 1996-2007 Club Delphi