标签:winform com http blog c log t sp art html re
这方面的文章已经写得很详细了,特地摘引两篇文章
http://www.cnblogs.com/c2303191/articles/826571.html
http://www.cnblogs.com/EasonLeung/p/3683492.html
http://www.cnblogs.com/Rustle/articles/11301.aspx
然后我想把自己的理解记录下来,做一个笔记。
1.Control的Invoke和BeginInvoke的委托方法是在主线程,即UI线程上执行的,异步是指相对于调用BeginInvoke的线程异步,而不是相对于UI线程异步,BeginInvoke的原理是将调用的方法Marshal成消息,然后调用Win32 API中的RegisterWindowMessage()向UI窗口发送消息
2.委托的执行过程类似于线程的执行(实际上本质就是线程),当委托被Invoke以后,程序会开启一个异步线程执行委托,当委托执行完毕时线程自动终止
3.Invoke 和 BeginInvoke 就是为了解决在多线程中安全的更新界面显示而出现的。
将工作线程中涉及更新界面的代码封装为一个方法,通过 Invoke 或者 BeginInvoke 去调用,两者的区别就是一个导致工作线程等待,而另外一个则不会(工作线程即UI线程)
4.在新的线程中使用Invoke和BeginInvoke这种方式,其调用的委托其实相当于“注入”到了主控制线程中,它取得了主线程的控制
5.主线程表示Control.Invoke或Control.BeginInvoke中Control所在的线程,即创建该Control的线程。(一般为UI线程)
支线程表示调用Invoke或BeginInvoke的线程。
Winform 关于委托与Invoke和Begin Invoke的使用,码迷,mamicode.com
Winform 关于委托与Invoke和Begin Invoke的使用
标签:winform com http blog c log t sp art html re
原文地址:http://www.cnblogs.com/wanglg/p/3701788.html