Q-->question        A-->answer        M-->mention
          The Chapter 10th  Event

M:定义一个事件成员意味着=>
 1.类型的静态方法或者对象的实例方法可以订阅类型事件
 2.类型的静态方法或者对象的实例方法可以注销类型事件
 3.事件发生时通知已订阅事件的方法
 CLR的事件模型建立在委托(delegate)之一机制之上

M:设计一个对外提供事件的类型的步骤=>
 1.定义一个类型用于存放所有需要发送给事件通知接收者的附加信息,一般而言,所有传递给事件处理程序的用于存放事件信息的类都必须派生于System.EventArgs,并且以EventArgs结束,通常包含一组私有字段以及一些对外提供这些字段只读的公共属性
 2.定义事件成员,使用关键字event.它包括:一个给定的可访问性(一般为public),一个表示即将被调用方法的原形的委托类型及一个名称(有效标识符)
 3.定义一个负责引发事件的方法来通知已订阅事件的对象事件已经发生.
 4.定义一个方法将输入转化为期望事件

M:线程同步指导方针指出,方法永远不要在类型对象上加锁,因为这锁将对所有代码公开,应另建一个对象用于同步.

M:显示地提供add和remove访问器的方法实现,再加上一个对象来同步,即可实现线程安全,但是add和remove必须同时实现,缺一不可(不同于属性)

M:事件可以被声明为static,其访问器也将成为static,当然同步对象也应该为static

posted on 2007-06-08 16:17  晓木  阅读(150)  评论(0编辑  收藏  举报