Mi aplicación es una asp.net 3.5 que se ejecuta en iis 6 (Windows 2003) Esta aplicación atiende a 1000 usuarios a diario (100-500 usuarios en línea).asp.net ThreadPool - operación de larga duración
Deseo enviar un boletín por correo electrónico a los clientes semanalmente.
Alrededor de 200,000 correos electrónicos cada vez.
Este es el código que estoy usando:
ThreadPool.QueueUserWorkItem(new WaitCallback(AsyncProcessMailerQueue), null);
private static void AsyncProcessMailerQueue(object data)
{
for (int i=0;i<users.count ; i++)
{
MailMessage message = new MailMessage();
.......
SmtpClient smtpClient = new SmtpClient();
smtpClient.Send(message);
}
}
Al probar este local (en mi máquina dev) Veo la aplicación está funcionando mucho más lento.
- ¿Existe alguna forma mejor de escribir este código?
- ¿Debo usar ThreadPool.QueueUserWorkItem o crear un nuevo hilo con hilo t = nuevo Thread (nuevo ThreadStart (DoWork)); ?
- ¿Será mejor crear una aplicación totalmente separada con el propósito de enviar los boletines informativos? ¿Eso ayudará si ejecuta esta aplicación en la misma máquina?
He visto otros mensajes aquí hablando de ThreadPool vs Thread pero parece que nadie está seguro de cuál es mejor.
gracias! , si creo un servicio de Windows, ¿debería usar hilos también? si sigo usando asp.net, ¿por qué un hilo nuevo es mejor que usar ThreadPool? – RuSh
Sí, se recomienda usar hilos. Si continúa utilizando ASP.NET, usar ThreadPool para tareas de larga ejecución es una mala idea porque estos subprocesos se utilizan para atender solicitudes y si tiene muchos de ellos bloqueados para tales operaciones, el sitio podría dejar de funcionar. –