任务。
在使用.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中文网其他相关文章!