如何从工作线程中调用UI线程上的方法?

Hus*_*lil 15 c# wpf wcf multithreading prism

我正在开发一个使用以下技术的项目:

  • C#(.NET 4.0)
  • WCF
  • 棱镜4

我目前正在使用代理生成的Begin/End方法对我们的某个Web服务进行异步调用.调用成功,客户端能够在工作线程上接收Web服务的响应.

收到回复后,我继续举办活动.订阅该事件的类继续使用PRISM请求UI导航:

Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    this.RegionManager.RequestNavigate(RegionNames.LoginContentRegion, projectSelectionViewUri)));
Run Code Online (Sandbox Code Playgroud)

由于未在UI线程上捕获异步WCF响应,因此我不得不使用调用UI线程Application.Current.Dispatcher.BeginInvoke(...).

这里的问题是调用似乎什么都不做.UI未更新,不会引发异常.

我应该如何从工作线程中引发的事件中调用UI线程?

编辑:此问题已在以下链接中重新询问,因为假设的副本未提供答案:

在异步WCF响应线程上使用PRISM 4请求UI导航

Sam*_*ade 7

您需要确保在实际UI上调用Dispatcher,而不一定是Current.您可以尝试传递UI Dispatcher,或者使用某种形式的回调,这些回调将由UI处理.