FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
abortar proceso y mostrar estado
Buenas tardes a todos!,
Os comento por encima lo que quiero realizar. Estoy programando una aplicación en C++Builder XE3, la cual consulta una base de datos de Access (MDB) de clientes y con un boton mando publicidad personalizando el mail con archivos adjuntos a todos los clientes que cumplan con unos requisitos concretos (vamos una especie de SPAM automático). El caso es que me funciona perfectamente tanto la conexión a mi BBDD, como la actualización y consulta de información y el envío de mails de forma automática. El problema que tengo es que (de momento estoy haciendo pruebas con una BBDD con pocos clientes ficticios para verificarlo) cuando le doy al botón enviar el programa se queda pensando hasta que manda todos los correos de golpe y no me actualiza las variables intermedias ni me deja la posibilidad de cancelar el envio tras terminar una transacción correcta (para evitar datos corruptos en la BBDD). Para realizar el envio multiple hago una consulta a la BBDD con el filtrado deseado y acto seguido con un bucle for voy linea a linea enviando los mails y actualizando la BBDD hasta que termino de recorrer la tabla. Dentro del bucle tengo el siguiente código: Código:
// PROCEDEMOS A SU ENVIO try{ IdSMTP1->Connect(); IdSMTP1->Send(Form1->IdMessage1); contadorEmailsEnviados++; DBConnectionBBDD->BeginTrans(); try{ // Actualizamos la ruta en la BBDD en la sección de configuración strSQL = "UPDATE ... (no es importante) cmdBBDD->CommandText = strSQL; cmdBBDD->Execute(); DBConnectionBBDD->CommitTrans(); } catch(Exception &exception){ DBConnectionBBDD->RollbackTrans(); Application->ShowException(&exception); } } catch(Exception &exception) { Application->ShowException(&exception); Label1->Caption = "¡Error!"; break; } IdSMTP1->Disconnect(); IdMessage1->Clear(); Label1->Caption = contadorEmailsEnviados; // Application->MessageBoxW(L"Todo ok, pasamos al siguiente.",L"Info",MB_OK+ MB_ICONERROR); } // Fin de condicion IF (no la he pegado) }// fin bucle for Sin embargo si descomento la linea donde sale el MessageBox, en el momento de envio me sale ese mensaje (que no sirve para nada), pero sí que se actualiza la variable contadorEmailsEnviados en cada envio. ¿Se os ocurre alguna forma de poder mostrar en tiempo real cada vez que se envie un email e incluso con un boton poder abortar? ¿habría que iniciar otro proceso para evitar bloquear el programa y consultar el estado de una variable para finalizar todos los pasos intermedios y asi evitar corromper la BBDD? ¿Como se haria? Muchas gracias de antemano y un abrazo! |
|
|
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 |
|