C#異步委托之委托使用的時機淺析
C#異步委托之委托使用的時機是什么呢?那么讓我們開始講述吧:
在我的印象里,委托經常出現(xiàn)在三個場合(也許更多,我水平有限)。
C#異步委托之委托使用的時機1、事件調用(最常用)。
C#異步委托之委托使用的時機2、線程調用。
C#異步委托之委托使用的時機3、同步異步調用。
事件調用(最常用)是委托用的最多的地方。我們?yōu)榱耸勾翱谥g的數(shù)據(jù)可以進行傳遞,經常會使用窗體定義事件。最常見的情況是這樣的,用戶為了查詢一個客戶,在窗體B中單擊“查詢”按鈕后,彈出一個客戶查詢窗體(這里定義為A),在A中查詢出指定的結果后,單擊“選擇”按鈕,A關閉,窗體B上就獲得了查詢的客戶信息。基于這種情況,我們一般會在A中定義一個事件,然后會在B中寫一個當這個事件發(fā)生后調用的方法(函數(shù))。那么怎么把A的事件和B的方法結合起來呢,這個時候就需要用到委托了。實際上,委托就是事件和方法之間的橋梁。如果大家不明白,可以看看class.designer.cs這個文件,當我們在按鈕上選擇click按鈕事件時,就會自動創(chuàng)建一個與之相關的委托,以及事件函數(shù),例如。
- this.btnStart.Click +=
- new System.EventHandler(this.btnStart_Click);
線程調用時也需要使用委托。為什么呢?我們這么來考慮一下,線程主要表達模塊中的程序代碼的“執(zhí)行事實”(深入淺出MFC)。那么線程要調用執(zhí)行的函數(shù)代碼,怎么調用函數(shù)呢?這么一說,我們就知道了,委托(即函數(shù)指針)就是搭起函數(shù)和其他東西(事件、線程)之間的橋梁。所以,在線程調用時也要使用委托,通過委托連接要執(zhí)行的函數(shù)。例如:
C#異步委托之委托使用的實例應用:
- class Test
- {
- static void Main()
- {
- Thread newThread =
- new Thread(new ThreadStart(Work.DoWork));
- newThread.Start();
- }
- }
- class Work
- {
- Work() {}
- public static void DoWork() {}
- }
以上代碼中“new Thread(new ThreadStart(Work.DoWork));”部分就是委托的部分。ThreadStart委托,它表示此線程開始執(zhí)行時要調用的方法。所以,在線程調用時需要委托。
C#異步委托之委托使用的相關內容就向你介紹到這里,希望對你了解和學習C#異步委托之委托使用有所幫助。
【編輯推薦】