我有 ListView for 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
相同错误