我在MSDN文档()上读到了这篇文章,这似乎意味着在我的代码中调用SendAsync方法之后,我仍然需要等待,下面粘贴了这个方法。这是对的吗?如果是的话,那么我最好使用同步方法发送而不是。我的目标是进入循环中的下一封电子邮件并发送它,而不等待上一封邮件被发送,这将使我能够更快地处理emailMessages集合,而不是使用send方法。但这似乎不是真的。
调用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);
}发布于 2012-12-08 18:55:15
async方法相对于非异步替代方法的优点是,您不需要阻塞当前线程。在不想阻塞UI线程的UI环境中,这尤其有用,同时也防止了阻塞线程池线程的需要。
如果您只打算对结果执行阻塞等待,则它与非异步替代方案相比没有任何优势。
https://stackoverflow.com/questions/13780092
复制相似问题