如何在另一个类的线程中更新界面
示例代码如下:
Public Class Form4
Public Delegate Sub UpdateUI()
Dim wkThread2 As Threading.Thread
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
wkThread = New Threading.Thread(AddressOf setUI)
wkThread.IsBackground = True
wkThread.Name = "AAA"
wkThread.Start()
End Sub
Public Sub setUI()
Dim i As Int16
For i = 0 To 10000
If i = 5555 Then
'Dim xxx As New UpdateUI(AddressOf aaaa)
'xxx()
aaaa()
End If
Next
End Sub
Public Sub aaaa()
If Me.InvokeRequired Then '为什么此处返回都是false呢?
Me.Invoke(New UpdateUI(AddressOf aaaa))
Else
Label1.Text = "Stop"
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim cls1 As New Class1
cls1.workh()
End Sub
End Class
另一个类Class1:
Public Class Class1
Public wkThread As Threading.Thread
Public Sub workh()
wkThread = New Threading.Thread(AddressOf setUI)
wkThread.IsBackground = True
wkThread.Name = "AAA"
wkThread.Start()
End Sub
Public Shared Sub setUI()
Dim i As Int16
For i = 0 To 10000
If i = 5555 Then
'以下3种方法都不行
'Dim xxx As New Form4.UpdateUI(AddressOf Form4.aaaa)
'xxx.Invoke()
Form4.aaaa()
'Form4.Invoke(New MethodInvoker(AddressOf Form4.aaaa))
End If
Next
End Sub
End Class
请教各位,为什么同样的代码,在窗体里的线程更新UI能正确执行(Button1_Click),但是放在另外一个类(Class1)中就不能执行呢?(Button3_Click界面Label1没有更新)