2014-06-30 41 views
0

使用調用我可以使用下面從另一個線程主線程上執行包含代碼。vb.net上主線程

Invoke(New MethodInvoker(Sub() 
          Main Thread Code 
         End Sub)) 

我有可能會或可能不會從主線程調用,如果它不是那麼調用需要使用的功能。如果我這樣做會發生什麼,以至於函數總是使用一個調用來確定它是否在主線程上運行?會有什麼負面影響?

+0

「Invoke」並不是VB.NET編程語言固有的一種功能。你在談論Windows Forms嗎? (如果是這樣,則調用'Invoke'即使是沒有必要可能會稍微低效率的,但應該不會造成任何問題。我可以想像,它在內部運行'InvokeRequired'檢查。) – stakx

+0

有一丁點兒開銷,沒什麼可擔心的。更大的問題是你使用Invoke(),它只能在你需要你調用的方法的返回值時使用。不是這裏的情況,總是使用BeginInvoke()代替。 –

回答

0

不只是打電話Invoke而只打電話Invoke如果InvokeRequiredTrue

Dim method As New MethodInvoker(Sub() 
            'Main thread code 
           End Sub) 

If InvokeRequired Then 
    Invoke(method) 
Else 
    method() 
End If