Foros del Web » Programación para mayores de 30 ;) » .NET »

Duda uso de Thread

Estas en el tema de Duda uso de Thread en el foro de .NET en Foros del Web. Hola, estoy comenzando a usar un Thread en mi aplicacion para enviar e_mail. Es una aplicacion web hecha en C#, el envio de email es ...
  #1 (permalink)  
Antiguo 05/05/2011, 05:14
 
Fecha de Ingreso: enero-2011
Mensajes: 12
Antigüedad: 13 años, 10 meses
Puntos: 0
Duda uso de Thread

Hola, estoy comenzando a usar un Thread en mi aplicacion para enviar e_mail.

Es una aplicacion web hecha en C#, el envio de email es un servicio web, que llamo desde el programa principal usando un hilo.

En un principio me esta funcionando porque en cuanto doy al boton de enviar la aplicacion me devuelve el control al momento para seguir haciendo cosas e incluso cerrar la ventana del navegador y los e_mail se siguen mandando (y llegando), pero en alguna ocasión necesito mandar mas de 1000 e_mail y por el motivo que sea pasados unos 40 minutos es como si el procceso terminara sin mandar todos los e_mail y se queda e unos 500 e_mails enviados.

Hay alguna manera de que el proceso aguante mas tiempo?

O el hilo esta relacionado con que caduque la sesión?

Gracias, un saludo!
  #2 (permalink)  
Antiguo 05/05/2011, 08:16
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Respuesta: Duda uso de Thread

solo que especifiques que el hilo no es un hilo de segundo plano (background thread) para que al cerrar el hilo que lo creo este no se cierre y siga enviando los demas correos.

el timeout de tu servicio podria verse afectado por el timeout de ejecucion,envio o recepcion.

Alguna ocasion tuve un problema similar y lo que hicimos fue usar un MessageQueue para ir almacenando todas las peticiones de envio de correo (los mensajes en si) y despues un servicio de sistema hacia un dequeue de la lista para obtener la siguiente y procesarla.

asi no teniamos problemas de enviar correos y se tiene mas control sobre como fue que se envio y si no hubo alguna incidencia.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 05/05/2011, 10:15
 
Fecha de Ingreso: enero-2011
Mensajes: 12
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Duda uso de Thread

Peterpay gracias por la respuesta, he probado el hilo en segundo plano y nada, entorno a los 20 minutos el proceso de mandar e_mail se para, te adjunto el codigo por si ves algo raro que se me esta escapando, porque me estoy empezando a desesperar con el tema, porque ahora que creia que con el hilo tenia resuelto el problema, veo que no se resuelve.

Pd. no tiene nada que ver el hilo, con que caduque la sesion, es que ando pensando que puede ser eso?, o lo hilos van por su cuenta? Gracias!

public void btnEnviaCorreo_Click(object sender, EventArgs e)
{

try
{

//CREO EL HILO PARA LANZAR LOS EMAIL Y VOLVER CON EL CONTROL DE LA APLICACION
Thread tarea = new Thread(new ThreadStart(envioMasivo));
tarea.Priority = ThreadPriority.Highest;

//PARA EVITAR QUE EL HILO TERMINE
tarea.IsBackground = false;

tarea.Start();

}
catch (Exception ex)
{

lblMensaje.Text = ex.Message.ToString();
muestraWebDialog();
}
}
  #4 (permalink)  
Antiguo 05/05/2011, 10:38
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Respuesta: Duda uso de Thread

puedes poner tu codigo de envio masivo
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 06/05/2011, 01:11
 
Fecha de Ingreso: enero-2011
Mensajes: 12
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Duda uso de Thread

Si claro, este es el codigo... Gracias!


[WebMethod(EnableSession = true)]
public string enviaCorreo(string asunto, string mensaje, string destinatarios, string usuario, string adj)
{
string mensajeError = "";
try
{

DataSet midt = new DataSet();
System.Net.Mail.MailMessage correo = new System.Net.Mail.MailMessage();


correo.From = new System.Net.Mail.MailAddress(usuario);

correo.Bcc.Add(destinatarios);

correo.Subject = asunto;
correo.Body = mensaje;
correo.IsBodyHtml = true;
correo.Priority = System.Net.Mail.MailPriority.High;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.Timeout = 1000;
smtp.Host = "exchange.dominio.es";


if (adj != "")
{
Attachment adjunto = new Attachment(adj);
correo.Attachments.Add(adjunto);
}


smtp.EnableSsl = false;
smtp.Credentials = new System.Net.NetworkCredential("Admin", "Password*");


smtp.SendAsync(correo, correo);



return mensajeError;
}

catch (Exception ex)
{

return mensajeError = ex.ToString();

}

}
  #6 (permalink)  
Antiguo 09/05/2011, 01:43
 
Fecha de Ingreso: enero-2011
Mensajes: 12
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Duda uso de Thread

Veis algo raro en el código,o algo que tenga que tener en cuenta?

Gracias!

Etiquetas: threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.