Ver Mensaje Individual
  #5  
Antiguo 23-12-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por mizzard Ver Mensaje
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.
Responder Con Cita