您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關C#中如何實現長任務操作,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
許多種類的應用程序都需要長時間操作,比如:執行一個打印任務,請求一個 Web Service 調用等。用戶在這種情況下一般會去轉移做其他事情來等待任務的完成,同時還希望隨時可以監控任務的執行進度。
C#多線程控制進度條之長任務操作圖1
下面的代碼片斷示例了當長任務執行時用戶界面是如何被更新的。
// 顯示進度條 ,C#多線程控制進度條之長任務操作void ShowProgress( int totalStep, int currentStep ) { _Progress.Maximum = totalStep; _Progress.Value = currentStep; } // 執行任務 void RunTask( int seconds ) { // 每 1 / 4 秒 顯示進度一次 for( int i = 0; i < seconds * 4; i++ ) { Thread.Sleep( 250 ); // 顯示進度條 ,C#多線程控制進度條之長任務操作 ShowProgress( seconds * 4, i + 1 ); } } private void _btnRun_Click( object sender, System.EventArgs e ) { RunTask( Convert.ToInt32( _txtSecond.Value ) ); }
當我們運行上面的程序,在整個長任務的過程中,沒有出現任何問題。這樣就真的沒有問題了嗎?當我們切換應用程序去做其他事情后再切換回來,問題就發生了!主窗體就會出現如下情況:
C#多線程控制進度條之長任務操作圖2
這個問題當然會發生,因為我們現在的應用程序是單線程的,因此,當線程執行長任務時,它同時也就不能重畫用戶界面了。
為什么在我們切換應用程序后,問題才發生呢?這是因為當你切換當前應用程序到后臺再切換回前臺時,我們需要重畫整個用戶界面。但是應用程序正在執行長任務,根本沒有時間處理用戶界面的重畫,問題就會發生。
如何解決問題呢?我們需要將長任務放在后臺運行,把用戶界面線程解放出來,因此我們需要另外一個線程。
看完上述內容,你們對C#中如何實現長任務操作有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。