從閱讀ListView中的項目時遇到問題。 ListView位於主線程中,而我讀出的部分位於另一個類和另一個線程中。我的代碼如下:從Visual Basic中的另一個線程讀取ListView中的信息
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim ltm As ListViewItem = New ListViewItem
ltm.Text = "test1"
ltm.SubItems.Add("test2")
ltm.SubItems.Add("test3")
Me.ListView2.Items.Add(ltm)
Dim l As New test
Dim x As New Threading.Thread(AddressOf l.readout)
End Sub
End Class
Public Class test
Public Sub readout()
For Each i As ListViewItem In Form1.ListView2.Items
Dim command As String = i.SubItems(0).Text
Dim value As String = i.SubItems(1).Text
Dim executeon As String = i.SubItems(2).Text
MsgBox(command & vbCrLf & value & vbCrLf & executeon)
Next
End Sub
End Class
我聽說過調用並找到一些示例代碼。我也嘗試以下:
Dim selectedItem = CStr((New Func(Of String)(Function() Form1.ListView2.Items(0).Text)).Invoke)
MsgBox(selectedItem)
但是,這也沒有工作。沒有錯誤消息,它只是不顯示任何消息框。當我刪除線程和相同的類時,它工作得很好。有誰知道它爲什麼不起作用?
標準VB.NET錯誤,在工作線程中使用Form1會創建一個Form1類的* new *實例。除非添加Form1.ShowDialog(),否則無法看到它。如果你修復這個bug,那麼你會得到InvalidOperationException。不要在工作線程中混淆UI,給它一個List(Of String)來處理。 –