【发布时间】:2014-08-11 17:15:09
【问题描述】:
- 我的主 GUI 表单 (lstDevices) 上有一个 ListBox。
- 它绑定到一个 BindingList(of Devices) [AvailableDevices],它是类 [NetworkManager] 的一个属性。
- 此 BindingList 在网络管理器类中更新(添加/删除),由与表单 UI 不同的线程触发。
-
每次更新它(BindingList)时都会引发跨线程错误,并且基于 UI 的列表框永远不会更新。
表单伪代码:
Dim WithEvents disc As New UPnPDeviceManager.NetworkManager
lstDevices.DataSource = disc.AvailableDevices
lstDevices.DisplayMember = "FriendlyName"
H-E-L-P
【问题讨论】:
-
BindingList不是线程安全的。您只能在 UI 线程上触摸它。 -
我可以使用什么来触发通知事件(线程安全)。我尝试了 list(of type) - 但这没有用..?
标签: vb.net multithreading winforms list data-binding