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 教师闺蜜祝福语简短