SendMailAsync:在异步操作仍处于挂起状态时完成的异步模块或处理程序
使用SendMailAsync
我收到以下错误:
在异步操作仍处于挂起状态时完成异步模块或处理程序
我的代码:
public static async Task SendEmail(MessageContent messageContent, string emailBody) { SmtpClient smtpClientNoSend = new SmtpClient(); await smtpClientNoSend.SendMailAsync(mailMessage); }
从控制器呼叫:
public async System.Threading.Tasks.Task Register() { await SendEmail(); } private void SendEmail() { SMTPEmail.SendEmail(msg, output.ToString()); return null; }
您的呼叫层次结构已损坏。 您不应该使用async void
,仅用于事件处理程序,而是使用async Task
:
public static Task SendEmailAsync(MessageContent messageContent, string emailBody) { SmtpClient smtpClientNoSend = new SmtpClient(); return smtpClientNoSend.SendMailAsync(mailMessage); } public async Task Register() { await SendEmailAsync(); } private Task SendEmailAsync() { return SMTPEmail.SendEmailAsync(msg, output.ToString()); }
旁注 – 我不确定为什么你有这么多SendMail
方法,你可以将它们缩小到一个方法调用。