我的应用程序存在大量性能问题。我发现问题来自发送电子邮件。如何解决方法RegisterUser
返回的问题,而电子邮件的发送仍在进行中?我已经尝试启动一个线程来运行SendEmailConfirm
方法,但这在ObjectDisposedException
SendEmailConfirm
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方法答案 0 :(得分:4)
您需要使用SmtpClient
类的SendMailAsync
方法。
此外,对于不返回任何值的异步方法,您应该返回Task
。
以下是您的代码的样子:
public async Task<IdentityResult> RegisterUser(AccountViewModels.RegisterViewModel userModel)
{
var result = await _userManager.CreateAsync(user, userModel.Password);
await this.SendEmailConfirm(userModel.Email);
return result;
}
public Task SendEmailConfirm(string mail)
{
string subject = "Please confirm your Email for Chronicus";
string body = "Hello"
string email = user.Email;
return _messageService.SendMail(mail, subject, body);
}
以下是SendMail
的样子:
public Task 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;
return this._smtpClient.SendMailAsync(_msg);
}