2014-06-30 39 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