我需要能够异步拨打所有电子邮件。我们如何做到这样的事情。所以我们假设我有一个方法A
public void A() {
SendEmail();
}
public void SendEmail() { }
如何使这个SendEmail()方法异步?我们只是做一些像
这样的事情public async void SendEmail() { }
感谢。
答案 0 :(得分:0)
建议返回Task,所以我会返回它而不是返回void:
async Task SendEmail()
{
//Do Something
}
首选任务,因为您希望为您的呼叫者(可能是您自己)提供等待发送电子邮件之类的任务。
此外,任务还可以继续:
await SendEmail().ContinueWith(SendNotification);
答案 1 :(得分:0)
创建异步包装器
public Task void SendEmailAsyn() {
return Task.Factory.StartNew(() => { SendEmail(); });
}
答案 2 :(得分:0)
有一种更简单的方法来执行异步电子邮件,并且管理它的工具内置于操作系统中。我提供了一个类似的答案来回答一个稍微不同的问题:https://stackoverflow.com/a/30768906/964043
基本上,您可以使用 System.Net.Mail.SmtpClient 快速排队通过将 DeliveryMethod 设置为假脱机文件夹中写入磁盘的电子邮件的 PickupDirectoryFromIis 即可。在运行的服务器上,您只需在同一台计算机上设置和配置 Microsoft SMTP服务,即可指向有效的SMTP服务器,该服务器将为您转发消息。这意味着您已经拥有一个完全线程化和高性能的方法,可以异步发送电子邮件,而无需自己编写任何代码。非常适合从Web应用程序,Web服务或任何其他基于服务器的应用程序发送消息。