c# BackgroundWorker組件介紹(屬性、方法、事件)

來源:互聯網
上載者:User
c# BackgroundWorker組件介紹(屬性、方法、事件)2008-07-03 16:28
在VS2005中添加了BackgroundWorker組件,該組件在多線程編程方面使用起來非常方便,然而在開始時由於沒有搞清楚它的使用機制,走了不少的彎路,現在把我在使用它的過程中的經驗與諸位分享一下。
    BackgroundWorker類中主要用到的有這列屬性、方法和事件:
    重要屬性:
    1、CancellationPending              擷取一個值,指示應用程式是否已請求取消後台操作。通過在DoWork事件中判斷CancellationPending屬性可以認定是否需要取消後台操作(也就是結束線程);
    2、IsBusy                           擷取一個值,指示 BackgroundWorker 是否正在運行非同步作業。程式中使用IsBusy屬性用來確定後台操作是否正在使用中;
    3、WorkerReportsProgress            擷取或設定一個值,該值指示BackgroundWorker能否報告進度更新
    4、WorkerSupportsCancellation      擷取或設定一個值,該值指示 BackgroundWorker 是否支援非同步取消。設定WorkerSupportsCancellation為true使得程式可以調用CancelAsync方法提交終止掛起的後台操作的請求;
    重要方法:
    1、CancelAsync          請求取消掛起的後台操作
    2、RunWorkerAsync    提交一個啟動以非同步方式啟動並執行操作的請求。發出該請求後,將引發 DoWork 事件,該事件隨後開始執行後台操作。
    3、ReportProgress       引發ProgressChanged事件  
    重要事件:
    1、DoWork               調用 RunWorkerAsync 時發生
    2、ProgressChanged      調用 ReportProgress 時發生
    3、RunWorkerCompleted   當後台操作已完成、被取消或引發異常時發生
    另外還有三個重要的參數是RunWorkerCompletedEventArgs以及DoWorkEventArgs、ProgressChangedEventArgs。
    BackgroundWorker的各屬性、方法、事件的調用機制和順序:

    從可見在整個生活周期內發生了3次重要的參數傳遞過程:
    參數傳遞1:此次的參數傳遞是將RunWorkerAsync(Object)中的Object傳遞到DoWork事件的DoWorkEventArgs.Argument,由於在這裡只有一個參數可以傳遞,所以在實際應用往封裝一個類,將整個執行個體化的類作為RunWorkerAsync的Object傳遞到DoWorkEventArgs.Argument;
    參數傳遞2:此次是將程式運行進度傳遞給ProgressChanged事件,實際使用中往往使用給方法和事件更新進度條或者日誌資訊;
    參數傳遞3:在DoWork事件結束之前,將後台線程產生的結果資料賦給DoWorkEventArgs.Result一邊在RunWorkerCompleted事件中調用RunWorkerCompletedEventArgs.Result屬性取得後台線程產生的結果。
    另外從可以看到DoWork事件是在後台線程中啟動並執行,所以在該事件中不能夠操作使用者介面的內容,如果需要更新使用者介面,可以使用ProgressChanged事件及RunWorkCompleted事件來實現。

    明白了BagkgroundWorker的事件調用順序和參數傳遞機制之後在使用該組件用於多線程編程的時候就可以輕鬆許多了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.