当您无法到达管道时,一直向上同步是否有意义?

时间:2018-10-05 12:16:42

标签: c# async-await synchronous

有时候您拥有一个组件,例如HttpClient,仅提供异步方法。

当您可以“一直”进入异步事件处理程序或异步操作方法时,这很好,因为据我所知,执行返回到IIS管道,例如,它可以继续运行其他事情。 / p>

如果无法“一路攀升”,就必须在某个时候做类似.Result的事情。

我的情况是托管WCF服务的Windows服务,该服务使用HttpClient从API获取一些数据。我的代码处于受接口限制的方法中,该方法无法更改,也无济于事,因为该应用程序已经直接管理线程,而无需任何任务。

在这种情况下,最好是尽可能“一路向上”,最后立即阻止或阻止异步方法,并节省一路保存和恢复(等待)的复杂性和资源。顶部似乎没有理由吗?

1 个答案:

答案 0 :(得分:0)

如果阻止异步操作,则很可能会出现死锁。选中此答案https://stackoverflow.com/a/39371523/2138959和其他问题的答案,以获取有关该主题的动力。

在一般情况下,我建议使用AsyncEx.Context

这是C#Await, SynchronizationContext, and Console Apps: Part 3中async作者的精彩文章。