0
使用调用我可以使用下面从另一个线程主线程上执行包含代码。vb.net上主线程
Invoke(New MethodInvoker(Sub()
Main Thread Code
End Sub))
我有可能会或可能不会从主线程调用,如果它不是那么调用需要使用的功能。如果我这样做会发生什么,以至于函数总是使用一个调用来确定它是否在主线程上运行?会有什么负面影响?
使用调用我可以使用下面从另一个线程主线程上执行包含代码。vb.net上主线程
Invoke(New MethodInvoker(Sub()
Main Thread Code
End Sub))
我有可能会或可能不会从主线程调用,如果它不是那么调用需要使用的功能。如果我这样做会发生什么,以至于函数总是使用一个调用来确定它是否在主线程上运行?会有什么负面影响?
不只是打电话Invoke
而只打电话Invoke
如果InvokeRequired
是True
?
Dim method As New MethodInvoker(Sub()
'Main thread code
End Sub)
If InvokeRequired Then
Invoke(method)
Else
method()
End If
“Invoke”并不是VB.NET编程语言固有的一种功能。你在谈论Windows Forms吗? (如果是这样,则调用'Invoke'即使是没有必要可能会稍微低效率的,但应该不会造成任何问题。我可以想像,它在内部运行'InvokeRequired'检查。) – stakx
有一丁点儿开销,没什么可担心的。更大的问题是你使用Invoke(),它只能在你需要你调用的方法的返回值时使用。不是这里的情况,总是使用BeginInvoke()代替。 –