我使用异步操作方法:
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服务或数据库)。
干杯。