以WebBrowser.DocumentCompleted 事件為例,說明用C#如何完成事件的訂閱處理。

來源:互聯網
上載者:User

1、訂閱處理事件

      (1)首先定義一個事件處理常式方法,其簽名與該事件的委託簽名必須匹配。例如,本例中事件基於 WebBrowserDocumentCompletedEventHandler 委託類型,則下面的代碼定義了對應的事件處理函數:

void HandleDocumentCompletedEvent(object sender, WebBrowserDocumentCompletedEventArgs e)<br /> {<br /> // Do something useful here.<br /> }

      處理 WebBrowser.DocumentCompleted 事件,在新文檔完成載入時接收通知。傳遞到事件處理常式的 WebBrowserDocumentCompletedEventArgs 對象使您能通過 Url 屬性檢索新文檔的位置。如果 WebBrowser.DocumentCompleted 事件發生,則新文檔已完全載入,這意味著可以通過 WebBrowser.Document、WebBrowser.DocumentText 或 WebBrowser.DocumentStream 屬性訪問該文檔的內容。

      (2)使用加法賦值運算子 (+=) 來為事件附加事件處理常式。

webBrowser1. DocumentCompleted += HandleDocumentCompletedEvent;
      注意,上面的執行個體採用的是 C# 2.0 中的新文法。此文法完全等效於必須使用 new 關鍵字顯式建立封裝委託的 C# 1.0 文法:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(HandleDocumentCompletedEvent);

 

2、取消訂閱事件

      要防止在引發事件時呼叫事件處理常式,請取消訂閱該事件。要防止資源流失,應在釋放訂戶對象之前取消訂閱事件。在取消訂閱事件之前,在發布對象中作為該事件的基礎的多路廣播委託會引用封裝了訂戶的事件處理常式的委託。只要發布對象保持該引用,記憶體回收功能就不會刪除訂戶對象。

      使用減法賦值運算子 (-=) 取消訂閱事件:

webBrowser1.DocumentCompleted –= HandleDocumentCompletedEvent; //c#2.0文法 </p><p>webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(HandleDocumentCompletedEvent); //c#1.0文法<br />

 

3、匿名訂閱事件

      如果以後不必取消訂閱某個事件,則可以使用加法賦值運算子 (+=) 將匿名方法附加到此事件。在下面的樣本中,假設名為 publisher 的對象擁有一個名為 RaiseCustomEvent 的事件,並且還定義了一個 CustomEventArgs 類以承載某些類型的專用事件資訊。

 
publisher.RaiseCustomEvent += delegate(object o, CustomEventArgs e)<br /> {<br /> string s = o.ToString() + " " + e.ToString();<br /> Console.WriteLine(s);<br /> }; 
      注意,如果使用匿名函數訂閱事件,事件的取消訂閱過程將比較麻煩。這種情況下若要取消訂閱,必須返回到該事件的訂閱代碼,將該匿名方法儲存在委託變數中,然後將此委託添加到該事件中。一般來說,如果必須在後面的代碼中取消訂閱某個事件,則建議您不要使用匿名函數訂閱此事件。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.