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 结婚伴娘祝福语简短精辟