如何从工作线程中调用UI线程上的方法?
我正在开发一个使用以下技术的项目:
- C#(.NET 4.0)
- WCF
- 棱镜4
我目前正在使用代理生成的Begin / End方法对我们的一个Web服务进行异步调用。 调用成功,客户端能够在工作线程上接收Web服务的响应。
收到回复后,我继续举办活动。 订阅该事件的类继续使用PRISM请求UI导航:
Application.Current.Dispatcher.BeginInvoke(new Action(() => this.RegionManager.RequestNavigate(RegionNames.LoginContentRegion, projectSelectionViewUri)));
由于未在UI线程上捕获异步WCF响应,因此我不得不使用Application.Current.Dispatcher.BeginInvoke(...)
调用UI线程。
这里的问题是调用似乎什么都不做。 UI未更新,并且不会引发exception。
我应该如何从工作线程中引发的事件中调用UI线程?
编辑:此问题已在以下链接中重新询问,因为假设的副本未提供答案:
在异步WCF响应线程上使用PRISM 4请求UI导航
您需要确保在实际的UI Dispatcher
上调用,而不一定是Current
。 您可以尝试传入UI Dispatcher
,或者使用某种forms的回调,这些回调将由UI处理。