10 2012 档案
[z]C#多线程编程之:异步事件调用
摘要:当一个事件被触发时,订阅该事件的方法将在触发该事件的线程中执行。也就是说,订阅该事件的方法在触发事件的线程中同步执行。由此,存在一个问题:如果订阅事件的方法执行时间很长,触发事件的线程被阻塞,长时间等待方法执行完毕。这样,不仅影响后续订阅事件方法的执行,也影响主线程及时响应用户的其他请求。如何处理这个问题呢?讲到此,我想您已经想到了,那就是异步事件调用。 怎样实现异步事件调用呢?如果您对事件比较了解的话,您应该知道事件的本质其实是一种MulticastDelegate(多播委托)。MulticastDelegate类提供了一个GetInvocationList方法,该方法返回此多播委托的委..
阅读全文
[z] c#多线程通信之委托(事件)
摘要:转http://blog.csdn.net/richerg85/article/details/7659180在研究c# 线程之间通信时,发现传统的方法大概有三种①全局变量,由于同一进程下的多个进程之间共享数据空间,所以使用全局变量是最简单的方法,但要记住使用volatile进行限制。②线程之间发送消息(这个随后文章中会讨论到)。③CEvent为MFC中的一个对象,可以通过对CEvent的触发状态进行改变,从而实现线程间的通信和同步,这个主要是实现线程直接同步的一种方法。本文介绍的一种方法是这三种之外的一种方法,本文中实例是通过创建一个线程类,通过委托事件把值传送到Form所在的类中,同时更新
阅读全文
[z]Invoke与BeginInvoke
摘要:转http://www.cppblog.com/baby-fly/archive/2010/04/01/111245.html在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔:对.net事件的看法。一、为什么Control类提供了Invoke和BeginInvoke机制?关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。1、windows程序消息机制Windows GUI程序是基于消息机制的,有个主线程维护着一个消息泵。这个消息泵让windows程序生生不
阅读全文
[z]c# 自定义事件和委托
摘要:转自http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html在windows 编程中用到最多的就是控件的时间了,微软给我们很好的方式,把注意力放到事件执行方法的设计和编码上,但是但我们真正弄懂了事件的真正出发执行原理的话,对我们的编程的提高真是非常榜的,例如在windows编程中 如果我单击了一个button按钮触发了button 的click事件 Button1_Click(){} , 但是有时候我们编程的时候,不但想要触发button 的单击事件,我还想要把其他的时间也要调用下来顺序执行,要实现这种方式,除了在方法最后对其他..
阅读全文