【发布时间】:2016-12-08 11:39:33
【问题描述】:
我有 ListView 和 for 循环来填充项目,创建的每个项目都有一个类 TSMPPConnection 的实例,并且这个类具有属性 ConnectionItem要保存 listView 项目,我想从请求来自对象事件的类内部更改项目文本,当我直接更改项目文本时它会抛出异常。
附加信息:跨线程操作无效:控制 从线程以外的线程访问的“lstConnections” 创建于。
代表: 我使用委托来实现这个但同样的错误。
Delegate Sub dlg_WriteConnectionItemStatus(s As String)
Sub WriteConnectionItemStatus(s As String)
Dim dlg As New dlg_WriteConnectionItemStatus(AddressOf WriteConnectionItemStatus)
dlg.Invoke(s)
'there is no InvokeRequired to check if execution come from delgate and avoid infinite loop
If ConnectionItem IsNot Nothing Then ConnectionItem.SubItems(6).Text = s
End Sub
没有 InvokeRequired 来检查执行是否来自委托并避免无限循环
尝试1:使用另一个具有相同结构的子从原始子内的委托调用它。
Delegate Sub dlg_WriteConnectionItemStatus(s As String)
Sub WriteConnectionItemStatus(s As String)
Dim dlg As New dlg_WriteConnectionItemStatus(AddressOf WriteConnectionItemStatus_Interface)
dlg.Invoke(s)
End Sub
Sub WriteConnectionItemStatus_Interface(s As String)
If ConnectionItem IsNot Nothing Then ConnectionItem.SubItems(6).Text = s
End Sub
同样的错误
【问题讨论】: