La mia applicazione è un asp.net 3.5 in esecuzione su iis 6 (windows 2003) Questa applicazione serve migliaia di utenti al giorno (100-500 utenti in linea).asp.net ThreadPool - funzionamento di lunga durata
Desidero inviare una newsletter settimanale ai clienti.
Circa 200.000 email ogni volta.
Questo è il codice che sto utilizzando:
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);
}
}
Durante il test di questo locale (sulla mia macchina dev) Vedo l'applicazione sta lavorando molto più lento.
- C'è un modo migliore per scrivere questo codice?
- meglio utilizzare ThreadPool.QueueUserWorkItem o creare un nuovo thread utilizzando t = filettatura new Thread (nuovo ThreadStart (DoWork)); ?
- Sarà meglio creare un'applicazione completamente separata ai fini dell'invio delle newsletter. questo aiuterà se mal eseguito questa applicazione sulla stessa macchina?
Ho visto altri post qui parlare di ThreadPool vs Thread ma sembra che nessuno sia sicuro di quale sia il migliore.
grazie! , se creo un servizio Windows, dovrei usare anche i thread? se continuo ad usare asp.net, perché il nuovo thread è migliore rispetto a ThreadPool? – RuSh
Sì, si consiglia di utilizzare le discussioni. Se continui a utilizzare ASP.NET, quindi utilizzare ThreadPool per attività a esecuzione prolungata è una cattiva idea, poiché questi thread vengono utilizzati per soddisfare le richieste e se molti di essi sono bloccati per tali operazioni, il sito potrebbe smettere di funzionare. –