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