调用调用时空白ListView

时间:2019-01-09 18:35:46

标签: vb.net multithreading class listview

listView由类Form1拥有。单独的类传输中的子例程anotherThreadForm1中的子例程在线程中启动。 Form1拥有另一个公共子例程addItemsListView,该子例程使用Invoke。 当transmission.anotherThread调用addItemsListView时,子例程运行,但是listView保持空白。

在每个类中尝试了委托,调用等操作,但是存在相同的问题。

Class Form1
    Property myTransmission = New transmission
    Private Sub aSubRoutine() Handles MyBase.Load
        Dim t As New Threading.Thread(
            Sub()
                myTransmission.anotherThread()
            End Sub
        )
        t.Start()
    End Sub

    Public Sub addItemsListView(ByVal items As String())
        If listView.InvokeRequired Then
            listView.Invoke(Sub() addItemsListView(items))
        Else
            For each item In Items
                listView.Items.Add(item)
            Next
        End If
    End Sub
End Class

Class transmission
    Public Sub anotherThread()
        Form1.addItemsListView(New String() {"abc", "def"})
    End Sub
End Class

因此,我期望listView中包含“ abc”和“ def”,但它仍然完全空白。但是,如果我逐步执行代码,一切似乎都运行顺利。

1 个答案:

答案 0 :(得分:1)

您不是在谈论现有表格。通过作为参考:

$ sudo docker volume create --driver rexray/gcepd --opt size=50 --name test-volume          

然后在调用表单时将其包括在内:

Public Sub anotherThread(inForm As Form1)
  inForm.addItemsListView(New String() {"abc", "def"})
End Sub