您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)C#異步委托之委托使用的時(shí)機(jī)有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
在我的印象里,委托經(jīng)常出現(xiàn)在三個(gè)場(chǎng)合(也許更多,我水平有限)。
C#異步委托之委托使用的時(shí)機(jī)1、事件調(diào)用(最常用)。
C#異步委托之委托使用的時(shí)機(jī)2、線程調(diào)用。
C#異步委托之委托使用的時(shí)機(jī)3、同步異步調(diào)用。
事件調(diào)用(最常用)是委托用的最多的地方。我們?yōu)榱耸勾翱谥g的數(shù)據(jù)可以進(jìn)行傳遞,經(jīng)常會(huì)使用窗體定義事件。最常見的情況是這樣的,用戶為了查詢一個(gè)客戶,在窗體B中單擊“查詢”按鈕后,彈出一個(gè)客戶查詢窗體(這里定義為A),在A中查詢出指定的結(jié)果后,單擊“選擇”按鈕,A關(guān)閉,窗體B上就獲得了查詢的客戶信息?;谶@種情況,我們一般會(huì)在A中定義一個(gè)事件,然后會(huì)在B中寫一個(gè)當(dāng)這個(gè)事件發(fā)生后調(diào)用的方法(函數(shù))。那么怎么把A的事件和B的方法結(jié)合起來呢,這個(gè)時(shí)候就需要用到委托了。實(shí)際上,委托就是事件和方法之間的橋梁。如果大家不明白,可以看看class.designer.cs這個(gè)文件,當(dāng)我們?cè)诎粹o上選擇click按鈕事件時(shí),就會(huì)自動(dòng)創(chuàng)建一個(gè)與之相關(guān)的委托,以及事件函數(shù),例如。
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
線程調(diào)用時(shí)也需要使用委托。為什么呢?我們這么來考慮一下,線程主要表達(dá)模塊中的程序代碼的“執(zhí)行事實(shí)”(深入淺出MFC)。那么線程要調(diào)用執(zhí)行的函數(shù)代碼,怎么調(diào)用函數(shù)呢?這么一說,我們就知道了,委托(即函數(shù)指針)就是搭起函數(shù)和其他東西(事件、線程)之間的橋梁。所以,在線程調(diào)用時(shí)也要使用委托,通過委托連接要執(zhí)行的函數(shù)。例如:
C#異步委托之委托使用的實(shí)例應(yīng)用:
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í)行時(shí)要調(diào)用的方法。所以,在線程調(diào)用時(shí)需要委托。
關(guān)于“C#異步委托之委托使用的時(shí)機(jī)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。