我有一个WPF应用程序,它在启动时在一个单独的线程上进入命名管道服务器
在某个时间点,命名管道客户端将信息发送到此线程,而该线程又需要更新ViewModel中的Observable Collection。
试图直接这样做会导致异常“无法在非调度程序线程上访问此时的集合”(我稍微解释了错误)。
无论如何,如何将命名管道线程的处理程序放到UI线程上。我似乎没有一个可以用来调用方法的调度程序对象。我应该在启动时缓存到静态或单例或其他类似的东西
DispatcherSynchronizationContext看起来很有趣,但不知道如何在我的视图中获取并存储在我的View模型中。
答案 0 :(得分:0)
您始终可以通过
访问Current应用程序实例的Dispatchervar dispatcher = Application.Current.Dispatcher;
只要您有了这个,就可以在Invoke或BeginInvoke上对UI线程执行操作。