gpt4 book ai didi

c# - 从工作线程调用时的 TaskScheduler.FromCurrentSynchronizationContext 异常

转载 作者:行者123 更新时间:2023-11-30 22:08:35 26 4
gpt4 key购买 nike

不太确定这里发生了什么-

这段代码会导致问题,因为它首先从主线程调用(在 VS 的任务 View 中验证)并安排任务,但是在 UpdateSearchCache 中设置断点时,我们现在在工作线程中 - 不再是主线程!

从那里调用的后续 UI 代码片段会失败,因为它们是在工作线程上执行的。

这不是指定调度程序的全部意义吗?我错过了什么?

此代码在启动我们的应用程序时被调用。它从我们 PRISM 应用程序的 Bootstrap 调用并在 MainThread 上运行。

当任务启动时,SynchronizationContext.Current 不为空。

var currentScheduler = TaskScheduler.FromCurrentSynchronizationContext();
var ctx = SynchronizationContext.Current;
if (ctx == null)
throw new NullReferenceException();

Task.Factory
.StartNew(
() =>
SearchHelper.CacheSearchResults(_service.GetData())
.ContinueWith(result => UpdateCache(result.Result), currentScheduler);

最佳答案

TaskScheduler.FromCurrentSynchronizationContext 在调用线程上没有同步上下文时抛出 InvalidOperationException,即 SynchronizationContext.Current 返回 null。

关于c# - 从工作线程调用时的 TaskScheduler.FromCurrentSynchronizationContext 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195235/

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