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 生日广州男生祝福语简短