asp.net ThreadPool - 长时间运行的操作

RuS*_*uSh 5 asp.net multithreading threadpool

我的应用程序是在iis 6上运行的asp.net 3.5(Windows 2003)此应用程序每天为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);
    }
 }
Run Code Online (Sandbox Code Playgroud)

在本地测试(在我的开发机器上)时,我看到应用程序运行速度慢了很多.

  1. 有没有更好的方法来编写这段代码?
  2. 我应该使用ThreadPool.QueueUserWorkItem还是使用Thread t = new Thread(new ThreadStart(DoWork))创建一个新线程; ?
  3. 为发送简报而创建一个完全独立的应用程序会更好吗?如果在同一台机器上运行此应用程序会有帮助吗?

我在这里看到其他帖子谈论ThreadPool vs Thread但似乎没有人确定哪个更好.

Dar*_*rov 3

按优先顺序排列:

  1. 创建另一个应用程序。Windows服务将是一个不错的选择
  2. 使用Thread t = new Thread(new ThreadStart(DoWork));
  3. 您当前的实施