概述C#事件驅(qū)動(dòng)程序
C#事件驅(qū)動(dòng)程序這個(gè)詞兒對(duì)于初學(xué)者來說,往往總是顯得有些神秘,不易弄懂。而這些東西卻往往又是編程中常用且非常重要的東西。大家都知道windows消息處理機(jī)制的重要,其實(shí)C#事件就是基于windows消息處理機(jī)制的,只是封裝的更好,讓開發(fā)者無須知道底層的消息處理機(jī)制,就可以開發(fā)出強(qiáng)大的基于事件的應(yīng)用程序來。
先來看看事件編程有哪些好處。
在以往我們編寫這類程序中,往往采用等待機(jī)制,為了等待某件事情的發(fā)生,需要不斷地檢測(cè)某些判斷變量,而引入事件編程后,大大簡化了這種過程:
◆使用事件,可以很方便地確定程序執(zhí)行順序。
◆當(dāng)C#事件驅(qū)動(dòng)程序等待事件時(shí),它不占用很多資源。C#事件驅(qū)動(dòng)程序與過程式程序***的不同就在于,程序不再不停地檢查輸入設(shè)備,而是呆著不動(dòng),等待消息的到來,每個(gè)輸入的消息會(huì)被排進(jìn)隊(duì)列,等待程序處理它。如果沒有消息在等待,則程序會(huì)把控制交回給操作系統(tǒng),以運(yùn)行其他程序。
◆事件簡化了編程。操作系統(tǒng)只是簡單地將消息傳送給對(duì)象,由對(duì)象的C#事件驅(qū)動(dòng)程序確定事件的處理方法。操作系統(tǒng)不必知道程序的內(nèi)部工作機(jī)制,只是需要知道如何與對(duì)象進(jìn)行對(duì)話,也就是如何傳遞消息。
有了這么多好處,看來我們的確有必要掌握它。俗話說:“難了不會(huì),會(huì)了不難”。就讓我們一步一步開始吧...
要講事件,必然要講到委托(delegate)。它們之間的關(guān)系可以通過一個(gè)淺顯的比方來說明,這個(gè)比方可能不是十分恰當(dāng)。比如你要租一個(gè)房屋,這是一個(gè)事件,那么委托就是房屋租賃中介,當(dāng)你把租房子的消息告知中介后,中介就會(huì)產(chǎn)生出一套符合你要求的房屋租賃方案來。再由中介執(zhí)行這套方案,你便租得了這個(gè)房屋,即事件被處理了。當(dāng)然你也可以不通過中介,直接找房東,但如果沒有互聯(lián)網(wǎng)等工具,你如何得到誰出租房屋的信息?話題扯遠(yuǎn)了。
委托(delegate)
委托可以理解成為函數(shù)指針,不同的是委托是面向?qū)ο螅沂穷愋桶踩摹jP(guān)于委托的理解,可以參考我的另一篇文章《C#委托之個(gè)人理解》。
【編輯推薦】


















