C#多線程控制進(jìn)度條之異步調(diào)用
C#多線程控制進(jìn)度條之異步調(diào)用是如何實(shí)現(xiàn)的呢?現(xiàn)在讓我們看看具體的步驟和實(shí)現(xiàn):
在上面的代碼中,我們注意到,我們沒有給工作線程進(jìn)入點(diǎn)(RunTaskThreadStart)傳遞任何參數(shù),我們采用聲明一個(gè)窗體類的字段 _seconds 來給工作線程傳遞參數(shù)。在某種應(yīng)用場合不能夠給工作線程直接傳遞參數(shù)也是一件非常痛苦的事情。
C#多線程控制進(jìn)度條之異步調(diào)用的必要性:如何改進(jìn)呢?我們可以使用委托來進(jìn)行異步調(diào)用。委托是支持傳遞參數(shù)的。這樣,就消除了我們剛才的問題,使我們能夠消除額外的字段聲明和額外的工作線程函數(shù)。
如果你不熟悉委托,你可以簡單的把它理解為安全的函數(shù)指針。采用了委托異步調(diào)用,代碼片斷如下:
- // 執(zhí)行任務(wù)的委托聲明
- delegate void RunTaskDelegate( int seconds );
- // 通過創(chuàng)建委托解決傳遞參數(shù)問題
- private void _btnRun_Click(
- object sender, System.EventArgs e )
- { //C#多線程控制進(jìn)度條之異步調(diào)用
- RunTaskDelegate runTask =
- new RunTaskDelegate( RunTask );
- // 委托同步調(diào)用方式
- runTask( Convert.ToInt16( _txtSecond.Value ) );
- }
- //通過創(chuàng)建委托解決傳遞參數(shù)問題,
- //通過委托的異步調(diào)用消除用戶界面線程的阻塞問題
- private void _btnRun_Click(
- object sender, System.EventArgs e )
- {
- RunTaskDelegate runTask =
- new RunTaskDelegate( RunTask );
- // 委托異步調(diào)用方式 ,C#多線程控制進(jìn)度條之異步調(diào)用
- runTask.BeginInvoke(
- Convert.ToInt16( _txtSecond.Value ), null, null );
- }
C#多線程控制進(jìn)度條之異步調(diào)用的基本內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)C#多線程控制進(jìn)度條之異步調(diào)用有所幫助。
【編輯推薦】