【发布时间】:2015-04-01 04:56:29
【问题描述】:
我有以下带有async和await关键字的操作方法:
[HttpPost]
public async Task<ActionResult> Save(ContactFormViewModel contactFormVM)
{
if (domain.SaveContactForm(contactFormVM) > 0)// saves data in database
{
bool result = await SendMails(contactFormVM);//need to execute this method asynchronously but it executes synchronously
return Json("success");
}
return Json("failure");
}
public async Task<bool> SendMails(ContactFormViewModel contactFormVM)
{
await Task.Delay(0);//how to use await keyword in this function?
domain.SendContactFormUserMail(contactFormVM);
domain.SendContactFormAdminMail(contactFormVM);
return true;
}
在上面的代码中,一旦数据库操作完成,我想立即返回Json()结果,然后调用应该在后台执行的SendMails()方法。我应该对上面的代码做哪些修改?
【问题讨论】:
-
你遇到了什么错误?
-
@utility 我没有收到任何错误。
SendMails()方法是同步执行而不是异步执行。return Json("success")应该在当前线程上调用,SendMails()应该异步执行..
标签: c# asp.net asp.net-mvc asynchronous