我正在使用后台工作人员调用后台线程中的视图模型中的服务模块调用,所有这些都很好。
服务模块方法具有一个动作参数,在服务返回时调用该参数。现在,我需要回到UI线程来调用操作(我还尝试在viewmodel方法中返回UI线程,该方法是从服务模块调用的)。
所以问题的关键是我已经试过了
Application.Current.RootVisual.Dispatcher.BeginInvoke(() => code stuff here);这会产生无效的跨线程访问(很好,我在这里无法访问rootvisual,我理解)
然后,我试图让调度员换一种方式,如下所示
Deployment.Current.Dispatcher.BeginInvoke() => code here);我还尝试了一个静态类,它有一个Dispatcher属性,我在我的应用程序启动方法中设置了这个属性,然后尝试使用这个属性进行调用。
虽然使用部署dispatcher和我的静态类的dispatcher不会产生无效的跨线程访问,但让我如此困惑的关键是,如果我在这些调度程序调用的代码中的断点,那么我得到的System.Threading.Thread.CurrentThread.ThreadState是背景
不过,我可以在我的视图模型中更新我的属性,并且视图确实没有问题地进行更新,但是我想知道这里是否还有什么问题,这将是未来的一个问题。
发布于 2012-07-21 17:29:53
https://stackoverflow.com/questions/11594287
复制相似问题