我的应用程序存在巨大的性能问题。我发现问题出在发送电子邮件上。当电子邮件正在发送过程中,我如何修复这个问题使方法
RegisterUser
返回? 我已经尝试使用启动线程来运行SendEmailConfirm
方法,但这导致了SendEmailConfirm
中的ObjectDisposedException
异常。public async Task<IdentityResult> RegisterUser(AccountViewModels.RegisterViewModel userModel)
{
var result = await _userManager.CreateAsync(user, userModel.Password);
this.SendEmailConfirm(userModel.Email);
return result;
}
public async void SendEmailConfirm(string mail)
{
string subject = "Please confirm your Email for Chronicus";
string body = "Hello"
string email = user.Email;
_messageService.SendMail(mail, subject, body);
}
public void SendMail(string receiver, string subject, string body)
{
this._msg = new MailMessage(UserName, receiver);
this._msg.From = new MailAddress(UserName, Name);
this._msg.Subject = subject;
this._msg.Body = body;
this._msg.IsBodyHtml = true;
this._smtpClient.Send(_msg);
}
编辑:在问题中添加了SendMail方法
_messageService.SendMail
的签名是什么?它是异步方法吗?它返回什么? - Yacoub MassadSendEmailConfirm
时使用await
吗?SendMail()
来自于不同的类吗?请澄清。_messageService
正在同步发送邮件,那就是你的问题。我会回到_messageService
的实现中,并添加一个可等待的异步方法,该方法使用SmtpClient.SendMailAsync,从而允许IO以正确的异步方式发生。 - spender