首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 自訂控件開發 第三章(下):高效事件實作模式

     編輯:關於ASP.NET

直接宣告事件會導致編譯器生成大量多執行緒安全代碼,影響效能。ASP.NET 控件應採用 EventHandlerList 顯式管理事件:

// 事件鍵值
private static readonly object ValidateCreditCardFormKey = new object();

public event ValidateCreditCardFormEventHandler ValidateCreditCardForm
{
    add { Events.AddHandler(ValidateCreditCardFormKey, value); }
    remove { Events.RemoveHandler(ValidateCreditCardFormKey, value); }
}

protected void OnValidateCreditCardForm(ValidateCreditCardFormEventArgs args)
{
    var handler = Events[ValidateCreditCardFormKey] as ValidateCreditCardFormEventHandler;
    if (handler != null) handler(this, args);
}

Control.Events 內部使用單向鏈表儲存委托,僅在訂閱時分配記憶體。此模式為 ASP.NET 內建控件標準做法,兼顧效能與記憶體效率。

關鍵優勢

  • 無訂閱者時零額外開銷
  • 統一事件管理,便於除錯
  • 符合框架設計規範

下篇將示範完整的信用卡表單控件事件定義流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved