zoukankan      html  css  js  c++  java
  • 初学笔记(C#事件)

    1.声明事件

         EventHandler是一个预定义的委托,它定义了一个无返回值的方法。在 .Net Fromwork中,他的格式:

                      public  delegate  void EventHandler (Object  sender, EvenArgs  e)

    其中sender的类型为Object,表示时间发布者本身,e用来传递事件的相关信息,数据类型为EvenArgs及其派生类。

         标准的EvenArgs并不包含任何事件数据, 因此EventHandler专用于表示不生成数据的事件的事件方法。如果要事件生成数据,则必须提供自定义的事件类型,该类型从EventArgs派生,提供保存时间数据所需要的全部字段或属性,这样时间发布者可以将特定的数据发送给接收者。

         用标准的EventHandler委托可以声明不包含数据的标准事件:

                    public   event  EvenHandler  事件名;

         要生成包含数据的事件,必须先自定义事件数据类型,有两种:

    (1)先定义委托,再定义事件。

           public class 事件数据类型 : EventArgs   {//封装信息;}

          public delegate  返回值类型  委托类型名 (Object sender, 事件数据类型 e);

         public event 委托类型 事件名;

     (2)使用泛型EventHandler定义事件。

         public class 时间数据类型 : EventArgs    {//封装信息;}

         public event EventHandler<时间数据类型>事件名

    2.订阅事件

          声明事件的实质是定义一个数据变量,并不意味着就能成功触发事件,还要:(1)在事件的接收者中定义一个方法来响应时间,(2)通过创建委托对象把事件与事件方法联系起来(又称绑定事件或订阅事件)。负责绑定事件与事件方法的类就称为时间的订阅者。

            事件名 += new  事件委托名(事件方法);

    注意:

        (1)订阅事件的操作由事件的接收者实现。

       (2)每个事件都可以有多个处理程序,多个程序按顺序调用。如果一个处理程序发生异常,还未处理的程序则没有机会接受事件。为此,建议事件处理程序迅速处理事件,并避免发生异常。

       (3)订阅事件必须见一个与事件具有相同类型的委托对象,把事件方法当作委托目标,使用“+=”运算符把事件方法添加到源对象的事件中。

       (4)若要取消订阅事件,可使用“-=”。

    3.触发事件

        在C#中,触发事件与委托点用相同,但要注意使用匹配的事件参数。事件一旦触发,相应的事件方法就会被调用,如果该事件没有任何处理程序,则该事件为空。

    4.总结:

         第一步:定义相关信息类;

         第二步:定义事件警报器;

        第三步:声明事件产生时调用的方法;

        第四步:订阅事件;

        第五步:触发事件;

    5.采用基于事件驱动模型进行程序设计,其实过程包括五部分:

         (1)定义事件相关信息类;

        (2)在事件发布者类(事件源)中声明事件,并声明一个负责触发事件的方法;

        (3)在事件接受者类中声明事件产生时调用的方法;

        (4)在事件接受者类中订阅事件;

        (5)在事件接收者类中触发事件。

             初学笔记还望大家多多指点!!!

  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/xiaoning1992/p/3970151.html
Copyright © 2011-2022 走看看