0

我有一个 WPF 应用程序,它在启动时在一个单独的线程上初始化一个命名管道服务器。
在某个时间点,命名管道客户端将信息发送到该线程,该线程又需要更新 ViewModel 中的 Observable 集合。
尝试直接这样做会导致异常“无法在非调度程序线程上访问这次的集合”(我稍微解释一下错误)。
无论如何,我如何将命名管道线程的处理程序放到 UI 线程上。我似乎没有可以用来调用方法的调度程序对象。我应该在启动时缓存成静态或单例或类似的东西。
DispatcherSynchronizationContext 看起来很有趣,但不确定如何在我的视图中获取一个并将其存储在我的视图模型中。

4

1 回答 1

0

您始终可以通过以下方式访问当前应用程序实例的调度程序

var dispatcher = Application.Current.Dispatcher;

一旦你得到这个,你就可以通过InvokeBeginInvoke在 UI 线程上执行操作。

于 2012-11-05T11:36:38.297 回答