Fórum Thread como testar se está sendo executada? #350926
21/12/2007
0
Amigos...
Tenho uma thread criada da seguinte forma no form principal de minha aplicação:
With TNPS_FTP.Criar(´Entrada´) Do
OnTerminate := Msg_NPS_Thread;
O problema é que carrego ela na entrada do sistema (evento show do form principal) e se o usuario fechar a aplicação principal, e a thread estiver sendo executada, dá um erro, pque parece que o fechamento do form principal mata o processamento da thread que carreguei na memoria.
Portanto gostaria de no close do form principal poder testar se a thread está em execução.. para barrar o fechamento da aplicação... ex: solicitar que aguarde alguns instantes até o termino do processamento da thread....
Um grande abraço a todos..
Conto com vcs...
Pablo Rodrigues
Tenho uma thread criada da seguinte forma no form principal de minha aplicação:
With TNPS_FTP.Criar(´Entrada´) Do
OnTerminate := Msg_NPS_Thread;
O problema é que carrego ela na entrada do sistema (evento show do form principal) e se o usuario fechar a aplicação principal, e a thread estiver sendo executada, dá um erro, pque parece que o fechamento do form principal mata o processamento da thread que carreguei na memoria.
Portanto gostaria de no close do form principal poder testar se a thread está em execução.. para barrar o fechamento da aplicação... ex: solicitar que aguarde alguns instantes até o termino do processamento da thread....
Um grande abraço a todos..
Conto com vcs...
Pablo Rodrigues
Pablo_lima
Curtir tópico
+ 0
Responder
Posts
21/12/2007
Giordanocwb
Ao invés de utilizar ´With´, que realmente não aconselho, já tive alguns problemas com ele. Crie uma variável global do tipo da sua thread e associe na criação:
Para testar se sua thread foi terminada, basta você testar se MinhaThread está diferente de nil.
No manipulador de evento OnTerminate, ou seja, no Msg_NPS_Thread, coloque o código:
Assim, ao terminar, ele libera o ponteiro da sua thread.
T+
var MinhaThread: TNPS_FTP;
MinhaThread := TNPS_FTP.Criar(´Entrada´);
Para testar se sua thread foi terminada, basta você testar se MinhaThread está diferente de nil.
No manipulador de evento OnTerminate, ou seja, no Msg_NPS_Thread, coloque o código:
MinhaThread := nil;
Assim, ao terminar, ele libera o ponteiro da sua thread.
T+
Responder
Gostei + 0
21/12/2007
Giordanocwb
Uma correção, para testar se sua thread foi terminada, testa se MinhaThread está igual a nil.
T+
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)