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

gog*_*gog 11 .net c# multithreading

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

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

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

Mik*_*ate 24

尝试使用并行foreach.即

Parallel.ForEach(GetAllUsers(), user=>
{
  SendMail(user.Email);
});
Run Code Online (Sandbox Code Playgroud)


And*_*ren 9

你可以尝试这样的事情

private void Send()
{
    Parallel.Foreach(GetAllUsers(), user => 
    {
       SendMail(user.Email);
    });
}
Run Code Online (Sandbox Code Playgroud)