【发布时间】:2011-01-10 01:55:37
【问题描述】:
我的应用程序是在 iis 6 (windows 2003) 上运行的 asp.net 3.5 此应用程序每天为 1000 名用户提供服务(100-500 名在线用户)。
我想每周向客户发送一封电子邮件简报。
每次大约 200,000 封电子邮件。
这是我正在使用的代码:
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);
}
}
在本地(在我的开发机器上)测试时,我发现应用程序运行速度慢了很多。
- 有没有更好的方法来编写这段代码?
- 我应该使用 ThreadPool.QueueUserWorkItem 还是使用 Thread t = new Thread(new ThreadStart(DoWork)) 创建一个新线程; ?
- 最好创建一个完全独立的应用程序来发送新闻通讯。如果在同一台机器上运行此应用程序会有所帮助吗?
我在这里看到其他帖子谈论 ThreadPool 与 Thread,但似乎没有人确定哪个更好。
【问题讨论】:
标签: asp.net multithreading threadpool