簡體   English   中英

異步和等待操作方法。不能異步工作。 不知道原因嗎?

[英]Async and Await Action methods.Not working asynchronously. Don't know the reason?

我正在使用異步操作方法:

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) ,否則任何線程都可以選擇執行)。

“等待”的含義類似於“等待”,因此執行正在等待該方法完成,但是剩下的線程可以在其他地方工作,而不是在等待。

如果以同步方式執行此操作,則執行順序將相同,但是將阻止調用線程,等待GeneratePartLifeNotifications_ORN完成。 異步的神奇之處在於,它允許線程在其他地方工作,而不是等待正在發生的事情(例如Web服務或數據庫)。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM