参考博客地址:
http://www.cnblogs.com/blosaa/archive/2013/05/30/3107381.html
Control.Invoke()方法UI线程在执行时,会阻塞当前做事线程。UI线程执行完后,做事线程继续执行。
Control.BeginInvoke()方法UI线程在执行时,做事线程仍会执行
借用原博客中的话:
因此,我们可以想到。如果要异步取耗费长时间的数据,比如从数据库中读大量数据,我们应该这么做。
(1)如果你想阻止调用线程,那么用Invoke,代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。
(2)如果你不想阻止调用线程,那么用BeginInvoke,代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。