【发布时间】:2015-09-12 19:31:21
【问题描述】:
我已经多次阅读比我聪明的人的建议,其中几乎没有警告:始终在库代码中使用ConfigureAwait(false)。所以我相当肯定我知道答案,但我想成为 100%。场景是我有一个库,它轻薄地包装了一些其他异步库。
库代码:
public async Task DoThingAsyc() {
// do some setup
return await otherLib.DoThingAsync().ConfigureAwait(false);
}
应用代码:
// need to preserve my synchronization context
await myLib.DoThingAync();
// do I have my context here or did my lib lose it?
【问题讨论】:
-
ConfigureAwait不返回Task,而是返回ConfiguredTaskAwaitable。DoThingAsync看起来不像示例中的那样。 -
@i3arnon 所以我想这甚至都不会建成。现在好点了? (我的 atm 上没有编译器)
-
是的,可以编译,
ConfigureAwait不会影响调用者。 -
感谢您的帮助。鉴于此,我认为问题变成“应该”我做出这个改变,我已经单独问过here。
标签: c# .net async-await task-parallel-library