Visual Basic .NET使用Control.Invoke()执行线程安全的调用
示例
使用该方法,您可以将方法或函数的执行从后台线程移至创建控件的线程,通常是UI(用户界面)线程。这样,您的代码将排队等待在控件的线程上运行,从而消除了并发的可能性。Control.Invoke()
Control.InvokeRequired还应该检查该属性以确定您是否需要调用,或者代码是否已经在与控件相同的线程上运行。
该Invoke()方法将委托作为其第一个参数。委托将引用,参数列表和返回类型保存到另一个方法。
在VisualBasic2010(10.0)或更高版本中,可以使用lambda表达式动态创建委托方法:
IfLogTextBox.InvokeRequired= True Then
LogTextBox.Invoke(Sub() LogTextBox.AppendText("Check passed"))
Else
LogTextBox.AppendText("Check passed")
End If在VisualBasic2008(9.0)或更低版本中,您必须自行声明委托:
Delegate Sub AddLogText(ByVal Text As String)
IfLogTextBox.InvokeRequired= True Then
LogTextBox.Invoke(New AddLogText(AddressOf UpdateLog), "Check passed")
Else
UpdateLog("Check passed")
End If
Sub UpdateLog(ByVal Text As String)
LogTextBox.AppendText(Text)
End Sub
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语