gpt4 book ai didi

C# Singleton UI 线程问题

转载 作者:行者123 更新时间:2023-12-02 15:50:55 25 4
gpt4 key购买 nike

我正在使用其他人编写的获取市场数据的服务。它连接到他们的服务器,你向它发送一个符号,它会发回数据。好吧,我正在尝试使用它打开多个 View ,以便您可以获得多个交易品种的市场数据。完成此操作的方法是,我的 ViewModel 订阅单例事件 IncomingMessage,如果消息包含 ViewModel 的符号,则会将其放入 ObservableCollection 中。这就是问题所在。

如何将事件消息安全地添加到我的收藏中?

[编辑]我相信抛出异常是因为我的 ObservableCollection 绑定(bind)到我 View 上的 DataGrid。

最佳答案

您需要将对 Add 方法的调用编码(marshal)至 UI 线程。在 Prism 中,这通常是通过事件聚合器完成的,但如果您不使用 prism:

假设您有某种类型 Tick代表您的市场数据,数据事件只是 System.Action<Tick> :

dataSource.IncomingMessage += (tick) => Application.Current.Dispatcher.Invoke(new Action<Tick>(AddTheTick), tick);

或者,简单地说

dataSource.IncomingMessage += (tick) => Application.Current.Dispatcher.Invoke(new Action<Tick>(myObservableCollection.Add), tick);

关于C# Singleton UI 线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com