如何从 Socket.BeginRecieve 更新 C# wpf ComboBox?
我有一个 wpf ComboBox 数据绑定到 ObservableCollection,需要从 Socket 类中的异步函数 BeginRecieve 进行更新。我知道,当异步函数执行时,它是在一个新线程中,并且您无法通过其他线程更新主 GUI 控件。有人可以给我举个例子来说明如何实现这一点吗?
非常感谢您的帮助。
I have a wpf ComboBox databound to an ObservableCollection that needs to be updated from an asynchronous function BeginRecieve, in the Socket class. I know that when the async function is executed it is in a new thread and you cannot update the main GUI controls through other threads. Can someone please give me a example of how this might be accomplished?
Your help is much appreciated thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法从另一个线程更改集合的内容,您需要在调度程序线程上执行此操作。因此,不要这样做:
这样做:
另一个选择是使用在调度程序线程上引发
CollectionChanged
事件的集合。我在此处发布了一个示例。You can't change the contents of the collection from another thread, you need to do it on the dispatcher thread. So, instead of this:
Do this:
Another option is to use a collection that raises the
CollectionChanged
event on the dispatcher thread. I posted an example here.