如何从工作线程中调用UI线程上的方法
本文关键字:线程 UI 方法 调用 工作 | 更新日期: 2023-09-27 18:18:37
我正在做一个使用以下技术的项目:
- c#(。NET 4.0) WCF
- 棱镜4
我目前正在使用代理生成的Begin/End方法异步调用我们的一个Web服务。调用成功,并且客户端能够在工作线程上接收Web服务的响应。
一旦收到响应,我继续引发一个事件。订阅事件的类继续使用PRISM请求UI导航:
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
this.RegionManager.RequestNavigate(RegionNames.LoginContentRegion, projectSelectionViewUri)));
由于异步WCF响应没有在UI线程上捕获,因此我被迫使用Application.Current.Dispatcher.BeginInvoke(...)
调用UI线程。
这里的问题是调用似乎什么都不做。UI不更新,也不抛出异常。
我应该如何从一个事件中调用UI线程,在一个工作线程上引发?
编辑:这个问题已经在以下链接中重新问过了,因为假定的副本没有提供答案:
在异步WCF响应线程上使用PRISM 4请求UI导航
您需要确保在实际的UI Dispatcher
上调用,而不一定是Current
。您可以尝试在UI Dispatcher
中传递,或者有某种形式的回调,将由UI在某处处理。