c# Invoke和BeginInvoke 区别
2012-02-08 15:18
387 查看
解释:
1。UI执行A
2。UI开线程beginInvokeThread,B和C同时执行,B执行在线程UI上,C执行在线程beginInvokeThread上。
3。beginInvokeThread封送消息给UI,然后自己继续执行代码D,UI处理完消息后,处理invokeThread封送的消息,即代码段E
有点疑问:如果UI先执行完毕,是不是有可能过了段时间beginInvokeThread才把消息封送给UI,然后UI才继续执行封送的消息E。如图浅绿的部分。
Control的BeginInvoke是相对于调用它的线程,即beginInvokeThread相对是异步的。
因此,我们可以想到。如果要异步取耗费长时间的数据,比如从数据库中读大量数据,我们应该这么做。
(1)如果你想阻止调用线程,那么调用代码(三),代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。
(2)如果你不想阻止调用线程,那么调用代码(四),代码段D删掉,C改为耗费长时间的操作,因为这个操作是在另外一个线程中做的。代码段E改为更新界面的方法。
相关文章推荐
- c# Invoke和BeginInvoke 区别
- 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
- c# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke 区别
- [ZZ]C# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke 区别
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- c# Invoke和BeginInvoke 区别
- C# this.BeginInvoke()与Delegate.BeginInvoke()的区别
- 引用 c# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke的区别---推荐文章
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- c# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke 区别
- c# Invoke和BeginInvoke 区别
- C#中Invoke 和 BeginInvoke 的区别(多线程调用Winform)
- C#中Invoke 和 BeginInvoke 的区别
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- c# Invoke和BeginInvoke 区别