asp.net MVC 4 - 异步和等待操作方法。不异步工作。不知道原因?



我使用异步操作方法:

public async Task<JsonResult> SetMaterialRequisitionNoteStatus(List<Guid> ids, string statusName, Guid statusId)
{
   string resp = string.Empty;
   resp = await note.GeneratePartLifeNotifications_ORN(repairNote, "Outsourced Repair Note " + statusName);
   if (responce.ToLower() != "ok")
   {
      responce = responce.Replace("Workorder", "Outsource repair note");
      sendNotification(responce);
   }
   Utilities.SaveEntityInstance(note);
  ...... 
}

但是我的代码不是异步工作的。等待调用的下一行等待,直到我们从GeneratePartLifeNotifications_ORN方法获得结果。它以相同的同步代码工作。我想要异步行为。

等待呼叫的线路等待,直到我们从generatePartLifeNotifications_ORN方法。

好吧,你期待什么?await将异步执行该方法,并将释放当前线程以便在其他地方执行工作。当异步任务完成时,线程将返回并从中选择函数执行,并返回结果(除非指定.ConfigureAwait(false),否则任何线程都可以选择执行)。

"Await"的意思类似于"等待",所以执行是在等待该方法完成,但线程留在其他地方工作,它没有等待。

如果以同步方式执行,执行顺序将相同,但调用线程将被阻塞,等待GeneratePartLifeNotifications_ORN完成。异步的神奇之处在于允许线程在其他地方工作,而不是等待正在发生的事情(如Web服务或数据库)。

干杯。

最新更新