我想使用smtp clinet发送电子邮件。此操作应在其他线程中执行,以便重定向到索引页面。到目前为止,我已经编写了以下代码。
private async Task<int> SendEmail(System.Net.Mail.SmtpClient smtp, System.Net.Mail.MailMessage m)
{
smtp.Send(m);
return 0;
}
以这种方式在其他异步任务方法中调用此方法。
await SendEmail(smtp, m);
这个命题是否正确?
答案 0 :(得分:1)
您可以将SendEmail的实施更改为:
private async Task<int> SendEmail(System.Net.Mail.SmtpClient smtp,
System.Net.Mail.MailMessage m)
{
await smtp.SendAsync(m).ConfigureAwait(false);
return 0;
}
另见以下网址: https://msdn.microsoft.com/en-us/magazine/jj991977.aspx
一直异步
不要混用阻塞和异步代码。
配置上下文
尽可能使用ConfigureAwait(false)。