前一篇文章只是簡單的說了下事件,但是大家應該方法,在ASP.NET自定義控件中只是簡單那麼定義事 件是行不通。如果大家開發的是WinForm中的事件,之前的定義可能沒有什麼大的問題,只是在效率方法 欠考慮而且,還是可以運行的。
下面我們就回到ASP.NET中的事件。
大家也許看了我們之前定義的事件,確實,事件一般是那麼定義的,但是那樣定義事件後的,運行起 來的效率不搞,因為那樣定義事件後,編譯器在編譯事件代碼的時候,會自動的為我們加入很多多線程安 全的代碼,就是說,雖然我們只是定義幾行代碼,大但是編譯器為我們做了很多額外的事情,當然,這樣 代碼的運行的效率可想而知。
在很多的時候,我們自定義控件的事件不是需要考慮多線程安全等問題的,所我們就要改變代碼,使 其運行的更加好,我們就采用下面的方法:顯示的申明事件:
1 2 //其實其實一個輔助的變量,用來做Hashtable中的”鍵“ 3 private static object ValidateCreditCardFormKey = new object(); 4 public event ValidateCreditCardFormEventHandler ValidateCreditCardForm 5 { 6 add 7 { 8 Events.AddHandler(ValidateCreditCardFormKey, value); 9 } 10 remove 11 { 12 Events.RemoveHandler(ValidateCreditCardFormKey, value); 13 } 14 } 15 16 17 protected void OnValidateCreditCardForm(ValidateCreditCardFormEventArgs args) 18 { 19 ValidateCreditCardFormEventHandler handler = Events [ValidateCreditCardFormKey] 20 as ValidateCreditCardFormEventHandler; 21 if (handler != null) 22 handler(this, args); 23 }