gpt4 book ai didi

c# - 当前的 SynchronizationContext 不能用作 TaskScheduler

转载 作者:IT王子 更新时间:2023-10-29 03:36:28 25 4
gpt4 key购买 nike

我正在使用 Tasks在我的 ViewModel 中运行长时间运行的服务器调用,结果使用 TaskScheduler.FromSyncronizationContext() 编码回 Dispatcher。例如:

var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);

当我执行应用程序时,这工作正常。但是当我在 Resharper 上运行我的 NUnit 测试时,我在调用 FromCurrentSynchronizationContext 时收到错误消息:

The current SynchronizationContext may not be used as a TaskScheduler.

我猜这是因为测试是在工作线程上运行的。如何确保测试在主线程上运行?欢迎任何其他建议。

最佳答案

您需要提供一个 SynchronizationContext。我是这样处理的:

[SetUp]
public void TestSetUp()
{
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
}

关于c# - 当前的 SynchronizationContext 不能用作 TaskScheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com