【发布时间】:2015-10-01 01:23:47
【问题描述】:
如果一个方法被标记为异步,那有什么保证吗?
如果不是,调用异步方法以确保非阻塞行为的最佳做法是什么? (尤其是调用第三方库时)
加长版:
到目前为止,我假设等待异步方法保证不会阻塞线程(如果实现正确)。但是,我最近有this situation(也发生在others)。 在这种情况下,(非)阻塞行为取决于 EF 提供程序。由于 UI 层不应该真正了解或关心 DB 提供程序的实现细节,我认为将所有调用包装在 Task.Run 中以确保非阻塞行为是有意义的。但是,除了 UI 层之外,我在任何地方都不需要异步,这让我质疑始终保持异步的理念。
【问题讨论】:
-
你必须
await调用异步方法iirc -
这需要一些工作才能完全布局。但有一件事它不保证,那就是你不会受到你在异步方法内外调用的任何代码的副作用。
-
Here是
async-await上的一组文章。
标签: c# async-await