0

我在 MSDN 文档上阅读了这个,这似乎暗示在我的代码中调用 SendAsync 方法后我仍然需要等待,该方法粘贴在下面。这是正确的吗? 如果是,那我还不如直接使用Send的同步方法,而不是SendAsync。我的目标是转到循环中的下一封电子邮件并发送它,而无需等待上一封电子邮件被发送,这将使我能够比使用 Send 方法更快地处理 emailMessages 集合。但这似乎不是真的。

调用 SendAsync 后,您必须等待电子邮件传输完成,然后再尝试使用 Send 或 SendAsync 发送另一封电子邮件。

我正在使用 C# 和 .Net 框架 4.5。在我的代码中,我尝试使用 SendAsync 方法从循环中发送多封电子邮件,如下面的代码所示。

List<EmailMessage> emailMessages = DAL.GetEmailsToBeSent();
SmtpClient client = new SmtpClient(); 

foreach(EmailMessage emailMessage in emailMessages)
{
  //create a message object from emailMessage object and then send it asynchronously
  client.SendAsync(message);
 //client.Send(message);
}
4

1 回答 1

2

async方法优于非异步替代方法的优点是您不需要阻塞当前线程。这在您不想阻塞 UI 线程的 UI 环境中特别有用,并且还可以防止阻塞线程池线程的需要。

如果您只是对结果进行阻塞等待,那么与非异步替代方案相比,它没有优势。

于 2012-12-08T18:55:15.893 回答