2014-09-29 73 views
0

这是参考我正在开发的winforms应用程序。我对Invoke有点困惑。为什么使用Invoke时,我可以写内联代码?

我知道beginInvoke是异步的,调用是同步的。 beginInvoke是有意义的,如果你想让一段代码工作异步并让UI响应,但为什么我要在进程同步的时候使用Invoke?我可以通过在线编写代码来获得相同的结果吗?

+1

只有您的代码已经在UI线程上运行。如果它运行在其他线程上,那么'Invoke'就是将这个调用集中到UI线程上的一种方式,这非常有用。 – Cameron 2014-09-29 21:06:48

+0

调用编组调用正确的线程,但阻止调用一个(对于您的后台线程)。 – 2014-09-29 21:37:08

回答

5

不,不完全是。 Invoke也确保代码在的正确线程中运行

它的主要用途是从后台线程调用Invoke并让代码在UI线程上运行。

2

Invoke通常使用在这种情况下:

Control.Invoke(...); 

哪里Control实际上是一个控制。这里重要的是执行发生在UI线程上。

查看MSDN了解更多信息。

+0

感谢BradleyDotNET。 – user4032346 2014-09-30 01:39:59

相关问题