c# - 如何保证异步方法继续在另一个线程上运行?

标签 c# .net unit-testing async-await

ConfigureAwait(false) 是否保证继续在不同的线程上运行,或者仅表示不必在同一线程上运行?

有什么办法可以提供这种保证吗?

我需要测试跨线程的上下文流。

最佳答案

使用 ConfigureAwait(false) 告诉等待者不要在捕获的上下文中恢复,因此忽略 SynchronizationContext。这意味着继续将由使用 ThreadPool 线程的默认 TaskScheduler 安排。

如果原始线程是 ThreadPool 线程,延续可能在同一个线程上运行,否则你保证它是一个不同的线程。

您可以使用不带 SynchronizationContext(或带 ConfigureAwait(false))的专用线程开始测试,以确保 之前和之后的线程不同>异步操作。

关于c# - 如何保证异步方法继续在另一个线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27290214/

相关文章:

c# - 如何在不丢失数据的情况下重命名 Entity Framework 5 Code First 迁移中的数据库列?

.net - 更新组合框中显示的字段 DisplayMemberPath 未显示

.net - 如何将 NuGet 包添加到 Dockerfile 构建步骤?

.net - C# 内部 VS VBNET Friend

java.lang.IllegalStateException 尝试使用 randoop 生成单元测试

c# - Telerik radwindow 位置

C#如何判断基类是否是派生类的实例

c# - DLL 上的嵌入式 Xaml 页面

c# - 如何将现有程序集转换为 ms 单元测试程序集?

java - Android PointF 构造函数在 JUnit 测试中不起作用