C# Development | 事件( Event ) 及委派事件( EventHandler ) 的 ...

文章推薦指數: 80 %
投票人數:10人

C# Development | 事件( Event ) 及委派事件( EventHandler ) 的用法 ... 目前在寫設備控制的SDK ,而事件( Event ) 十分的好用,假設要執行計算較 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWriteC#Development|事件(Event)及委派事件(EventHandler)的用法如何使用事件(Event)及委派事件(EventHandler)讓程式執行完畢後主動通知而不用一直詢問狀態。

前言目前在寫設備控制的SDK,而事件(Event)十分的好用,假設要執行計算較繁瑣或是需要花較多時間處理的工作可以丟給其他執行緒處理,等其他執行緒處理完再觸發event通知說處理完畢即可。

另一種常用的時機是寫使用者介面(Userinterface)的時候,因為通常使用主執行緒來控制畫面(Form),而副執行緒來處理指令或是其他動作來避免畫面延遲甚至是卡住,所以當副執行緒完成任務後觸發事件來告知主執行緒該在畫面上顯示什麼資訊十分的常用。

概念簡介主要的概念就像是老闆(主執行緒)叫你這個員工(副執行緒)去幫忙跑腿買東西,當你去把東西買回來之後,不是直接衝進老闆辦公室跟老闆說你完成任務了,而事先告知秘書(承接委派的方法)說你完成了。

MSDN說明連結👇event-C#參考Theevent關鍵字用來在發行者類別中宣告事件。

eventkeywordisusedtodeclareaneventinapublisherclass.下例範例示範如何宣告及引發使用The…docs.microsoft.comExample這個Example主要是讓副執行緒去執行一個計數的動作,等記數到一定值後觸發event。

而主程式接收到這個event後用MessageBox顯示接收到event。

1.建立一個WindowsFormApplication專案(本文是用VisualStudio2015,.NETFramework4.5.2)。

2.需要UsingSystem.Threading。

接著建立一個class,內部需要宣告一個public的委派好讓外部可以承接、一個publicevent當計數完畢後觸發,以及計數的方法。

程式碼如下。

CountingClass彩色版程式碼3.在主執行緒中宣告一副執行緒,然後在Form1建構子中先將CountingClass中的event用委派DelegateFinish與要承接的方法(HandleEventFunction)連接起來。

這樣當觸發eventFinished這個事件時就會去執行HandleEventFunction這個方法。

FormClass彩色版程式碼4.完成上面三步就大功告成了!以下是完整程式碼。

執行結果當計數完畢後就跳出MessageBox顯示副程式已經完成計數工作了。

Done~尾聲其實使用到現在會覺得將委派傳遞值可以使用object這樣靈活度較高,不管是什麼類別的資料等傳遞完再轉型,這樣就可以變成任何人的形狀呢!MorefromGarnett.C嘎內Follow學店畢業末班生,前輪班星人工程師,現在轉任可以慢慢實現自己夢想的工程師工作。

喜歡閱讀及分享,踏上追尋夢想的生命旅程~Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedGarnett.C嘎內97Followers學店畢業末班生,前輪班星人工程師,現在轉任可以慢慢實現自己夢想的工程師工作。

喜歡閱讀及分享,踏上追尋夢想的生命旅程~FollowMorefromMediumStasoz2.13LoopsAbdellaSolomonHowtomakeamovablecontrolinAvalonia?mustafagündoğduWhatistheMiddlewareJayParikhHowtosendanemailusingMicrosoftGraphEmailAPIin .NetCore?HelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?