任務。
在使用.NET中使用異步操作時,了解
Task.Wait
await
問題:僵持的Web API
>
示例代碼顯示了從ASP.NET Web API獲取端點的三個異步方法(
同時等待十個任務時,就會出現問題。這導致了僵局。 Foo
Bar
Ros
Task.WaitAll
vs.Ros
>解釋
>
Task.Wait
>同步阻止當前線程,直到所等待的任務完成為止。 相反,異步將當前方法暫停,將不完整的任務返回給呼叫者。 僅當等待任務完成時,執行才能恢復。 await
>
Task.Wait
>
await
發生僵局是因為
>任務(在循環中)運行。這些任務取決於先前的異步方法(,),它們本身都在等待其他任務。 在主線程被阻止的情況下,這些因任務無法完成,導致僵局。
避免阻塞:首選方法Task.WaitAll
Ros
>
Ros
看似誘人的雖然使用合作阻止來解決這一問題。 它引入了不可預測性並使應用程序行為分析複雜化。 最好的解決方案是允許任務異步完成,從而避免僵局。
以上是任務如何在ASP.NET Web API異步操作中導致僵局?的詳細內容。更多資訊請關注PHP中文網其他相關文章!