• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            關(guān)于C#事件

              1/*
              2 * 該程序是介紹關(guān)于事件的處理過程,使用c#提供的規(guī)范化模式
              3 * 出版社和訂閱者的模式,出版社要定義事件,訂閱者來定義響應(yīng)事件函數(shù)
              4 * 
              5 */

              6using System;
              7using System.Collections.Generic;
              8using System.Text;
              9
             10class PubEventArgs : EventArgs      //事件傳遞參數(shù)類
             11{
             12    private readonly string m_magazineName;
             13    private readonly DateTime m_pubDate;
             14    public PubEventArgs(string magazineName, DateTime pubDate) 
             15    {
             16        m_magazineName = magazineName;
             17        m_pubDate = pubDate;
             18    }

             19    public string magazineName 
             20    {
             21        get return m_magazineName; }
             22    }

             23    public DateTime pubDate 
             24    {
             25        get return m_pubDate; }
             26    }

             27}

             28
             29class Publisher 
             30{
             31    public delegate void PubComputerEventHandler(object sender, PubEventArgs e); //定義事件委托
             32    public delegate void PubLifeEventHandler(object sender, PubEventArgs e);
             33    public event PubComputerEventHandler PubComputer;
             34    public event PubLifeEventHandler PubLife;   //根據(jù)委托類型定義事件
             35    protected virtual void OnPubComputer(PubEventArgs e) /*觸發(fā)事件*/
             36    {
             37        PubComputerEventHandler handler = PubComputer;
             38        if (handler != null)
             39        {
             40            /*實(shí)際上觸發(fā)的是這個(gè)委托鏈*/
             41            handler(this, e);
             42        }

             43    }

             44    protected virtual void OnPubLife(PubEventArgs e) 
             45    {
             46        PubLifeEventHandler handler = PubLife;
             47        if (handler != null
             48        {
             49            handler(this, e);
             50        }

             51    }

             52    public void issueComputer(string magazineName, DateTime pubDate) //觸發(fā)方法
             53    {
             54        Console.WriteLine("發(fā)行"+magazineName);
             55        OnPubComputer(new PubEventArgs(magazineName,pubDate));
             56    }

             57    public void issueLife(string magazineName, DateTime pubDate)
             58    {
             59        Console.WriteLine("發(fā)行"+magazineName);
             60        OnPubLife(new PubEventArgs(magazineName, pubDate));
             61    }

             62}

             63
             64class Subscriber 
             65{
             66    private string name;
             67    public Subscriber(string name) 
             68    {
             69        this.name = name;
             70    }

             71    public void Receive(object sender ,PubEventArgs e)
             72    {
             73        Console.WriteLine(e.pubDate+" "+name+"已經(jīng)收到"+e.magazineName);
             74    }

             75}

             76
             77namespace CSEventTestProc
             78{
             79    class Program
             80    {
             81        static void Main(string[] args)
             82        {
             83            Publisher pub = new Publisher();
             84            Subscriber zs = new Subscriber("張三");
             85            Subscriber ls = new Subscriber("李四");
             86            pub.PubComputer += new Publisher.PubComputerEventHandler(zs.Receive);
             87            pub.PubComputer += new Publisher.PubComputerEventHandler(ls.Receive);
             88            pub.PubLife += new Publisher.PubLifeEventHandler(ls.Receive);
             89
             90            pub.issueComputer("電腦雜志", Convert.ToDateTime("2010-12-24"));
             91            pub.issueLife("生活雜志", Convert.ToDateTime("2010-12-24"));
             92
             93            Console.WriteLine("一年后……");
             94            pub.PubComputer -= new Publisher.PubComputerEventHandler(ls.Receive);
             95            pub.issueComputer("電腦雜志", Convert.ToDateTime("2010-12-24"));
             96            pub.issueLife("生活雜志", Convert.ToDateTime("2010-12-24"));
             97        }

             98    }

             99}

            100

            posted on 2011-01-09 09:20 成大才子 閱讀(165) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            關(guān)于更多關(guān)于成大才子,請(qǐng)?jiān)L問http://hi.baidu.com/成大才子

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            文章檔案

            鏈接

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲乱亚洲乱淫久久| 7777久久久国产精品消防器材| 久久99久久99小草精品免视看| 中文字幕久久欲求不满| 蜜桃麻豆www久久国产精品| 久久久久久精品成人免费图片 | 久久99国产精品久久99果冻传媒| 99久久国产综合精品五月天喷水| 伊人久久五月天| 久久国产精品成人免费| 亚洲国产综合久久天堂 | 国产精品久久久久一区二区三区| 四虎影视久久久免费观看| 久久A级毛片免费观看| 亚洲国产天堂久久久久久| 91精品国产高清久久久久久国产嫩草 | 欧美亚洲日本久久精品| 久久天天躁狠狠躁夜夜96流白浆| 欧美大战日韩91综合一区婷婷久久青草 | 亚洲国产天堂久久综合网站| 亚洲精品蜜桃久久久久久| 热久久国产欧美一区二区精品 | 亚洲国产一成久久精品国产成人综合| 国产精品久久久福利| 久久婷婷国产综合精品 | 久久精品国产清自在天天线| 99久久综合狠狠综合久久止| 亚洲国产美女精品久久久久∴| 亚洲欧美成人久久综合中文网| 久久精品无码一区二区三区免费 | 亚洲精品美女久久777777| 香蕉久久夜色精品国产2020| 亚洲国产成人久久一区WWW| 久久精品国产国产精品四凭| 久久国产三级无码一区二区| 久久久久九国产精品| 日本精品久久久久影院日本 | 久久久久久国产a免费观看黄色大片 | 亚洲国产精品久久| 久久国产乱子伦精品免费午夜| 久久亚洲高清综合|