.Net中的非同步處理–BackgroundWorker

來源:互聯網
上載者:User

通常我們編程中都會碰到一些比較耗時的操作,這樣一般採用非同步呼叫的方式處理一些UI上的假死現象。.Net的非同步處理方法一般常見的有BackgroundWorker類 和 IAsyncResult介面;繼我上篇部落格中提到的,先看看BackgroundWorker的處理方式。

BackgroundWorker,顧名思義就是將方法在“後台”處理,也就是說在主線程以外在開啟一個獨立的線程來運行,同時可以擷取該線程的狀態值來判斷其運行狀態。先看看它的幾個重要屬性和事件:

IsBusy擷取一個值,指示 BackgroundWorker 是否正在運行非同步作業。

OnDoWork引發 DoWork 事件(線程所要處理的方法或函數)。

OnProgressChanged引發 ProgressChanged 事件(常見的程式進度條就可以用此方法來實現了)。

OnRunWorkerCompleted引發 RunWorkerCompleted 事件(即線程運行完成時觸發的方法)。

RunWorkerAsync已重載。 開始執行後台操作。RunWorkerAsync有兩個同名函數RunWorkerAsync ()和RunWorkerAsync (Object);後者用來給調用方法傳遞參數。這樣的話,它既可以調用無參方法,也可以調用帶參的方法了;

當然,不想運行時還可以調用CancelAsync 來取消工作。

這樣我們就可以基本控制了一個線程為我們服務了。

work.DoWork += Count;

work.RunWorkerCompleted += completeRun;

work.RunWorkerAsync();

具體執行個體見上篇部落格《多線程顯示運行狀態》.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.