小编JHa*_*all的帖子

VB窗体带参数的跨线程方法调用

我正在编写一个 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。

vb.net multithreading delegates winforms

1
推荐指数
1
解决办法
4373
查看次数

标签 统计

delegates ×1

multithreading ×1

vb.net ×1

winforms ×1