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()代替。 –