Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 23-12-2015
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 16
mizzard Va por buen camino
Retomo el tema

Buenas tardes de nuevo,

Retomo el hilo porque lo estoy planteando con threads y me estoy armando un lio.

Por casualidades me he dado cuenta que cuando mando el email:

Código:
Form1->IdSMTP1->Connect();
Form1->IdSMTP1->Send(Form1->IdMessage1);
Puede darse el caso de que el servidor tarde más de lo esperado, por lo que me propongo usar threads (nunca las he usado).

Basándome en el siguiente video:
https://www.youtube.com/watch?v=1g4db90Mfgw

Adapto mi código de tal forma que parece ser que funciona, pero tengo los siguientes problemas:

1º Antes llamaba a una función que se encargaba de gestionar los envíos, pasándole un parámetro para actuar de una forma u otra (aprovechando el codigo de envio)

Ahora al tener que insertar el codigo en la Unit2.cpp dentro de la sección de void __fastcall TConnectThread::Execute() he sacado el codigo de la funcion y no sé como hacerlo para que cuando se ejecute el thread que se active la funcion que tenia antes estilo:
Código:
void enviarEmail(int opcion);
Eso o actuar sobre variables globales, pero me da a mi que es mejor pasársela por función.

2º En el Unit1.cpp

Cuando deseo llamar al Thread, utilizo:
Código:
myThread1->Start();
Ya que tengo la siguiente linea:

Código:
TConnectThread *myThread1 = new TConnectThread(true);
Al principio del todo (inmediatamente despues de los includes, de los #pragma link, TForm1 *Form1)

No sé si es que lo estoy utilizando mal o que es lo que pasa, que mi objetivo es utilizar un timer programado con un tiempo para que si se queda enganchado el servidor de envio que aborte el thread de forma drástica.

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.


CONCLUSIÓN:

Me gustaria utilizar un thread para evitar cuelgues del programa cuando se envian varios emails y el servidor puede que se caiga, para ello necesito enviar variables al thread para aprovechar la funcion de envio que utilizaba y saber como abortar en caso de que me desborde el timer

¿Alguna orientación de como hacerlo?

Muchas gracias y un abrazo!
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
mostrar animación con mensaje durante un proceso vicens22 Desarrollo en Delphi para Android 5 15-05-2014 13:48:02
Mostrar en Progress Bar un proceso matti Varios 4 31-05-2011 14:55:01
Mostrar el estado del programa. mcalmanovici Varios 3 25-03-2008 20:02:18
Como abortar correctamente un proceso que es interrumpido por el cierre del Form gluglu Varios 10 28-08-2007 15:41:03
Abortar un proceso TONIAM Varios 10 31-05-2007 19:26:41


La franja horaria es GMT +2. Ahora son las 16:16:10.


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