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 祝福语驱散霉运的话简短