【发布时间】:2017-05-10 18:44:02
【问题描述】:
ConfigureAwait(false) 是否保证继续在不同的线程上运行,还是仅表示不必在同一线程上运行?
有没有办法提供这种保证?
我需要测试跨线程的上下文流。
【问题讨论】:
-
任务也可以在同一个线程上同步完成,在这种情况下
ConfigureAwait(false)根本不做任何事情。 IMO,获得保证的最简单方法是使用自定义等待者(而不是ConfiguredTaskAwaitable)。 -
@Noseratio 感谢您的评论。我完全忘记了这种可能性。
-
没问题;总体而言,我不会指望
ConfigureAwait(false)不仅仅是为了避免冗余上下文切换的优化。注意 MSDN docs say: true 试图将延续编组回捕获的原始上下文;否则为 false。 除该声明之外的任何其他行为都将被记录在案,并且可能是特定于版本的。
标签: c# .net unit-testing async-await