模仿事件(自定义一个事件)

    昨天看了《professional C# 2005 with .net 3.o》中关于事件的描述,并且它自己实现了一个自定义的事件,如果当前时间的秒数小于30就触发事件,否则该事件取消。但是在这本书的例子中又加入了按钮的事件处理,然后用的又是一个窗体应用程序,感觉没有把重点完全突出出来,而且我个人感觉他的事件处理比较容易搞混,刚开始我都以为他把事件的处理者和发送者弄反了。后来仔细想想才理出头绪来,并且完全理解了他的意思。即他认为按下按钮时事件的发送。所以他在里面先new了一个ActionCancelEventArgs的事件处理与发送的纽带类,然后调用OnAction函数发送了事件。调用OnAction(Action)函数以后,因为它是一个delegate,又是静态的,并且这个delegate在BusEntity类中new了一个对应的处理函数。所以这个函数就会直接转到Form1_Action中来执行,这样一趟事件发生处理过程就完成了。但是因为这个例子涉及到了其他的事件处理,而且加入了其他的元素,所以显得有点混乱,虽然在以后编程会更混乱,但是在初学者来说会比较难以理解,像我第一次看的时候就没有完全看懂。然后我就写了一个自己的控制台的自定义事件过程,比较清晰,含杂质比较少,希望给大家有帮助。当然我是属于初学者,又不好的地方请大家改正。先给出代码再分析吧。

 

Code

 

我的DoSomething类模仿了Application类的处理方法,因而可以把它看作一个在Application中执行的Form窗口。相当于Form1。而ControlTimer类就可以看作一个控件,比如想象成一个Button。事件处理在DoSomething类中执行,事件发送者是在Run函数中因为一个休眠的时间到了然后就发送一个ControlTimer类的SecondOdd事件,这个最后到达ControlTimer类中,有这个类来发送,然后到DoSomething类中来处理,判断当前时间的秒数是否为奇数。

posted @ 2008-09-11 10:58  江湖飘  阅读(334)  评论(0编辑  收藏  举报