前一篇文章只是簡單的說了下事件,但是大家應該方法,在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 }