我通过使用后台工作人员在后台线程中从我的视图模型调用服务模块调用,一切都很好而且花花公子。
服务模块方法有一个操作参数,当服务返回时调用该参数。现在我需要回到 UI 线程来调用操作(我也尝试在我的 viewmodel 方法中返回 UI 线程,该方法是从服务模块调用的。)
所以对于我尝试过的问题的症结所在
Application.Current.RootVisual.Dispatcher.BeginInvoke(() => code stuff here);
这会产生无效的跨线程访问(我明白我在这里无法访问 rootvisual)
然后我尝试以不同的方式让 Dispatcher 如下所示
Deployment.Current.Dispatcher.BeginInvoke() => code here);
我还尝试了一个静态类,它具有我在应用程序启动方法中设置的 Dispatcher 属性,然后尝试使用它进行调用。
虽然使用部署调度程序和我的静态类的调度程序不会产生无效的跨线程访问,但让我如此困惑的关键是,如果我在这些调度程序调用的代码中设置断点,那么我会得到这个System.Threading.Thread。 CurrentThread.ThreadState 是背景
但是,我可以在我的视图模型中更新我的属性,并且视图确实可以毫无问题地更新,但我想知道这里是否还有问题,这将是未来的一个问题。