c# 委託實例的幾種執行方式詳解

聲明委託:

首先,綁定委託方法有如下幾種方式:

第一種,直接對符合委託結構的方法進行多綁定:

第二種,綁定匿名方法:

第三種,用等號指定單方法:

注意,第三種綁定方式會將之前所綁定的方法全部解綁,執行結果如下:

如果將第三種的=改爲+=,則執行結果如下,會按照你綁定的順序依次執行:

以上,是委託實例對方法進行綁定的幾種方式,下面則是委託實例的幾種執行方式:

第一種,直接用執行:

這種方式採用的是同步線程執行,會依次執行該委託實例所有綁定的方法,直到執行完畢,纔會繼續走下面的代碼。

第二種,採用異步執行方式:

但是如上所示,你發現用異步執行報錯了,原因就是,如果你要使用異步執行委託的話,那麼將不再能夠進行多方法綁定,如果綁定了多個方法,則會報出“該委託必須有一個目標,且僅有一個目標”的異常。

我們改爲只綁定一個方法,就執行正常了:

那麼問題來了,這兩種執行方法,各有什麼優劣呢?

很顯然,同步調用的執行方式可以進行方法的多綁定,但缺點就是我們必需要等待其所有綁定方法執行結束,才能進行後面代碼的執行。

而異步調用卻無需等待,直接便可執行後方的代碼,並且,異步執行委託可以讓我們控制方法的執行時間,如下:

其中關鍵方法WaitOne(1000)意思就是說,在該委託執行之後,阻塞當前線程1000毫秒,用以等待,如果過了1000毫秒委託還沒有執行完畢,就會返回false。我們根據判斷,可以做一些特殊的功能,比如說彈個“執行超時”的彈框啦,或者是像上面我寫的代碼一樣,做一些動態效果之類的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章