C# 事件的含義
事件類似于異常,因為它們都由對象引發(fā)(拋出),并且都可以通過我們提供的代碼來處理。但它們也有幾個重要區(qū)別。最重要的區(qū)別是并沒有與try...catch類似的結構來處理事件,你必須訂閱(subscribe)它們。訂閱一個事件的含義是提供代碼,在事件發(fā)生時執(zhí)行這些代碼,它們稱為事件處理程序。
單個事件可供多個處理程序訂閱,在該事件發(fā)生時,這些處理程序都會被調用,其中包括引發(fā)該事件的對象所在的類中的事件處理程序,但事件處理程序也可能在其他類中。
事件處理程序本身都是簡單方法。對事件處理方法的唯一限制是它必須匹配事件所要求的返回類型和參數(shù)。這個限制是事件定義的一部分,由一個委托指定。
基本處理過程_如下所示:首先,應用程序創(chuàng)建一個可以引發(fā)事件的對象。例如,假定一個即時消息傳送(instant messaging)應用程序創(chuàng)建的對象表示一個遠程用戶的連接。當接收到遠程用戶通過該連接傳送來的消息時,這個連接對象會引發(fā)一個事件,如圖所示。
接著,應用程序訂閱事件。為此,即時消息傳送應用程序將定義一個方法,該方法可以與事件指定的委托類型一起使用,把這個方法的一個引用傳送給事件,而事件的處理方法可以是另一個對象的方法,例如當接收到消息時進行顯示的顯示設備對象,如圖所示。
引發(fā)事件后,就通知訂閱器.當接收到通過連接對象傳來的即時消息時,就調用顯示設備對象上的事件處理方法。因為我們使用的是一個標準方法,所以引發(fā)事件的對象可以通過參數(shù)傳送任何相關的信息,這樣就大大増加了事件的通用性在本例中,一個參數(shù)是即時消息的文本,事件處理程序可在顯示設備對象上顯示它。
點擊加載更多評論>>