进行多线程foreach循环的最佳方法

时间:2013-10-23 11:58:20

标签: c# .net multithreading

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

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

我需要改进这种方法。使用多线程,因为我不想等待SendMail方法每次为每个用户执行。 有没有这样的消化呢? 感谢

3 个答案:

答案 0 :(得分:23)

尝试使用并行foreach。即。

Parallel.ForEach(GetAllUsers(), user=>
{
  SendMail(user.Email);
});

答案 1 :(得分:9)

您可以尝试这样的事情

private void Send()
{
    Parallel.Foreach(GetAllUsers(), user => 
    {
       SendMail(user.Email);
    });
}

答案 2 :(得分:3)

我认为最简单的方法是使用线程池。 .Net让这很简单,你可以阅读更多关于here.

的信息