Añadir barra de progreso a smtpclient enviando asincronamente

03/11/2006 - 12:02 por Daniel | Informe spam
He creado una aplicación para mandar email asincronamente mediante
smtpclient de System.Net.Mail. Al llamar al método SendAsync(objmail,objeto)
obtengo el evento SendCompleted por lo que sé cuando se ha terminado de
enviar el email.

Ahora bien, ¿como se podría añadir una barra de progreso al programa para
que me indique el progreso del envio?, no he logrado ver ningun evento que
me de valores para rellenarla.

Gracias
 

Leer las respuestas

#1 Alberto Poblacion [MVP]
03/11/2006 - 16:36 | Informe spam
"Daniel" wrote in message
news:%23lf$Tez$
He creado una aplicación para mandar email asincronamente mediante
smtpclient de System.Net.Mail. Al llamar al método
SendAsync(objmail,objeto) obtengo el evento SendCompleted por lo que sé
cuando se ha terminado de enviar el email.

Ahora bien, ¿como se podría añadir una barra de progreso al programa para
que me indique el progreso del envio?, no he logrado ver ningun evento que
me de valores para rellenarla.



No, el SendAsync no da ninguna indicación de progreso. Si quisieras dar
una indicación "real" de cómo va progresando el envío del mensaje, tendrías
que implementar tú mismo el protocolo SMTP usando sockets e ir haciendo
avanzar el indicador de progreso mientras se van transmitiendo los bytes. No
es algo simple de hacer.

Como alternativa, si lo único que quieres es mostrar "algo" para que el
usuario no se ponga nervioso, podrías simular el progreso con una técnica
parecida a la del Internet Explorer, que lo que hace cuando no sabe cuánto
mide una página es hacer una estimación arbitraria de lo que va a tardar y
cada equis tiempo hacer avanzar la barra. Si sigue pasando el tiempo y la
página no ha llegado, va haciendo avanzar la barra cada vez más despacio de
forma que nunca llega al final, hasta que por fin se terminan de recibir los
datos y entonces completa de golpe la barra de progreso.

Preguntas similares