我正在编写一个 VB 表单应用程序,它重定向进程的标准输出流并在 UI 中使用它。
我在调用带有参数的方法时遇到了问题,这些参数会从 OutputHandler 子程序更新表单上的控件。
我可以像这样调用一个没有参数的方法
Me.Invoke(New MyDelSub(AddressOf ServerStarted))
Run Code Online (Sandbox Code Playgroud)
哪个工作正常。
一些谷歌搜索告诉我,要调用带参数的方法,我应该这样做:
Dim del As JoinDelegate = AddressOf PlayerJoins
del.Invoke(username)
Run Code Online (Sandbox Code Playgroud)
使用这个委托和方法对:
Private Delegate Sub JoinDelegate(ByVal username As String)
Private Sub PlayerJoins(ByVal username As String)
PlayersBox.Items.Add(username)
'Do other stuff
End Sub
Run Code Online (Sandbox Code Playgroud)
但是这会在该方法第一次尝试访问控件时产生 IllegalOperationException。