课堂上的代表

时间:2016-12-08 11:39:34

标签: vb.net delegates

我有 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

相同错误

0 个答案:

没有答案