ASP.NET溫故而知新學習系列之委託與事件—事件概述(一)

來源:互聯網
上載者:User

  閱讀目錄

  一:事件概述

  二:ASP.NET中的事件

  三:執行個體

  四:運行效果

  一:事件概述
     Windows作業系統啟動的時候,要載入硬體,載入硬體驅動,載入軟體等等,啟動以後只要你不點擊它,它就沒有任何的反應,當你單擊“開始”菜單的時候,就會彈出一個菜單來,大部分的程式都是面向事件驅動的,什麼是事件驅動呢?就是由外界觸發的,事件就是一個訊號,它告知應用程式有重要的情況發生。

     C#中使用事件的步驟
     1:建立一個委託
     2:建立一個事件,將建立的事件或者特定的事件和建立的委託關聯起來聯
     3:編寫事件處理常式
     4:利用編寫的事件處理常式產生一個委託執行個體
     5:把這個委託執行個體添加到產生事件對象的事件列表當中去,這個過程叫做訂閱事件

  二:ASP.NET中的事件
    ASP.NET主要支援3個事件租
    2.1:在ASP.NET產生頁面時自動發生
        比如:頁面載入的時候
        protected void Page_Load(object sender, EventArgs e)
       {   
       }

    2.2:使用者與頁面互動時所發生的事件
        比如:單擊頁面上的一個按鈕也就是Web伺服器控制項所帶的一些自己的事件
        protected void btnAdd_Click(object sender, EventArgs e)
       {
        }

    2.3:html內部的事件,這些事件在瀏覽器上執行
        就是javascript實現的那些事件

    所有的Web伺服器端控制項都可以添加兩個事件,用戶端事件,伺服器端事件,用戶端事件由瀏覽器解釋執行的,伺服器端事件要傳到伺服器執行的。

  三:執行個體

 1 //step1 建立一個委託 2 public delegate void MessageHandler(string message); 3 class Program 4  { 5         static void Main(string[] args) 6         { 7             Connection conn = new Connection(); 8             Display display = new Display(); 9             //step4 'new MessageHandler(display.DiaplayMessage)'表示利用編寫的事件處理常式產生一個委託執行個體
//step5 '+='表示事件的預定,'conn.MessageArrived'表示添加什麼到產生事件對象的事件列表當中去,合起來解釋就是把這個委託執行個體添加到產生事件對象的事件列表當中去,這個過程叫做訂閱事件,委託就是代理,我們可以這樣理解,委託就是把一個事件處理函數和一個事件關聯起來
10 conn.MessageArrived += new MessageHandler(display.DiaplayMessage);11       conn.Connect();
12        Console.ReadKey();
13     }  
14 15 public class Display16 {17 public string strMessage;18 public Display()19 {20 21 }22 /// <summary>23 /// step3 編寫事件處理常式24 /// </summary>25 /// <param name="message"></param>26 public void DiaplayMessage(string message)27 {28 strMessage = message;29 Console.WriteLine("訊息到達:{0}", strMessage);30 }31 }32 }33 34 public class Connection35 {36    //step2 建立一個事件名稱叫'MessageArrived',將建立的事件或者特定的事件和建立的委託關聯起來37   public event MessageHandler MessageArrived;38    private Timer polltimer;//聲明一個timer39   public Connection()40   {41    polltimer = new Timer(100);//一百毫秒42    //流失事件43    polltimer.Elapsed += new ElapsedEventHandler(CheckForMessage);44    }45 46   public void Connect()47   {48   polltimer.Start();49   }50 51    /// <summary>52    /// 53    /// </summary>54    /// <param name="sender"></param>55    /// <param name="e"></param>56    public void CheckForMessage(object sender, ElapsedEventArgs e)57   {58    Random random = new Random();59    //在時間流失的過程中如果產生的隨機數正好是9的話,我們就輸出一個訊息60    if ((random.Next(9)==0) && (MessageArrived != null))61    {62    //MessageArrived("你好")實際執行的是DiaplayMessage()方法63    MessageArrived("你好");64    }65    }66 }

 

  四:運行效果

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.