13

我有一个带有 foreach 的发送电子邮件方法,如下所示:

static void Main(string[] args)
{
   foreach(var user in GetAllUsers())
   {
      SendMail(user.Email);
   }
}

我需要改进这种方法。使用多线程,因为我不想等待 SendMail 方法每次为每个用户执行。有什么建议吗?谢谢

4

3 回答 3

28

尝试使用并行 foreach。IE

Parallel.ForEach(GetAllUsers(), user=>
{
  SendMail(user.Email);
});
于 2013-10-23T12:00:15.123 回答
11

你可以试试这样的

private void Send()
{
    Parallel.Foreach(GetAllUsers(), user => 
    {
       SendMail(user.Email);
    });
}
于 2013-10-23T12:00:30.627 回答
3

我认为最简单的方法是线程池。.Net 使这变得非常容易,您可以在此处阅读有关它的更多信息

于 2013-10-23T12:25:38.363 回答