我指的是MSDN上的document。我理解“.BeginInvoke”的作用,但是查看文档上的示例代码
Delegate Sub MyDelegate(myControl As Label, myArg2 As String)
Private Sub Button_Click(sender As Object, e As EventArgs)
Dim myArray(1) As Object
myArray(0) = New Label()
myArray(1) = "Enter a Value"
myTextBox.BeginInvoke(New MyDelegate(AddressOf DelegateMethod), myArray)
End Sub 'Button_Click
Public Sub DelegateMethod(myControl As Label, myCaption As String)
myControl.Location = New Point(16, 16)
myControl.Size = New Size(80, 25)
myControl.Text = myCaption
Me.Controls.Add(myControl)
End Sub 'DelegateMethod
委托myDelegate(和DelegateMethod)接受一个控件和一个字符串,但是,在.BeginInvoke中,传递了一个Label控件和一个数组......
myTextBox.BeginInvoke(New MyDelegate(AddressOf DelegateMethod), myArray)
并且在“DelegateMethod”中有
myControl.Text = myCaption
不应该传递字符串而不是数组吗?我错过了什么吗?
答案 0 :(得分:3)
BeginInvoke可以接受两个参数。一个是委托,在本例中是AddressOf DelegateMethod。
另一个参数是参数数组。 DelegateMethod接受两个参数:标签和字符串。为了使用begininvoke传递它们,将具有两个成员的对象数组传递给beinginvoke以匹配方法的参数:标签和字符串。
因此,使用此数组传递标签和字符串
答案 1 :(得分:1)
您的代码是正确的。框架代表您从对象数组中适当地转换参数。