Cita:
Empezado por mizzard
En el timer pongo:
Código:
myThread1->Terminate();
Y dentro del thread en la condicion while añado && !Terminated, pero claro funciona cuando no se engancha en el servidor
Si pruebo con esto otro
Código:
unsigned long exitCode;
GetExitCodeThread(myThread1, &exitCode);
TerminateThread(myThread1, exitCode);
Parando el timer posteriormente, indicar que el thread no para, ya que continua.
|
El método Terminate() No asegura que el thread termine, sólo que saldrá del bucle de Execute, si lo tiene. Si el hilo está "enganchado" por el servidor, no terminará de este modo. Quizás la respuesta esté en manipular IdSMTP. Si vas a usar varios hilos, sería lo suyo si envías varios emails, éstos no deberían depender de Form1->IdSMTP1, sino tener su propio componente.
El siguiente código con la API TerminateThread acaba con el hilo fulminantemente y debe usarse con myThread1->Handle. No es la forma recomendable de terminar un hilo, pues puedes tener fugas de memoria al no liberarse correctamente.
Código:
TerminateThread(myThread1, exitCode);
Código:
TerminateThread(myThread1->Handle, exitCode);
Saludos.