2010-08-20 30 views

回答

13

是的,它基本上像一個線程,但額外的功能(事件通知您的進度與完成) 。

您應該在需要執行某些可能需要一段時間(例如計算,文件或數據庫讀取/寫入,Web請求等)的情況下使用它,並且您不希望圖形用戶界面在顯示時無響應正在發生:

BackgroundWorker類允許您在單獨的專用線程上運行操作。諸如下載和數據庫事務等耗時的操作可能會導致您的用戶界面(UI)看起來好像在運行時停止響應一樣。如果您想要一個響應式用戶界面,並且您面臨着與此類操作相關的長時間延遲,則BackgroundWorker類提供了一個便捷的解決方案。

閱讀How to: Run an Operation in the Background的介紹。

+0

謝謝先生(10x).. :) – yonan2236 2010-08-20 02:43:34

4

一個簡單的例子:

static void Main(string[] args) 
{ 
    BackgroundWorker worker = new BackgroundWorker(); 
    //DoWork is a delegate, where you can add tasks 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.RunWorkerCompleted += (sender, e) => 
     { 
      var IfYouWantTheResult = e.Result; 
      //maybe notify others here 
     }; 
    worker.RunWorkerAsync(); 
    //you can cancel the worker/report its progress by its methods. 
} 

欲瞭解更多詳細信息,請here

1

後臺工作人員基本上是一個線程,它會在完成時回調,並且回調將在U.I.的上下文中進行。線程,以便您可以更新U.I.完成後。

如果您需要在U.I.的背景下完成回調。線程 - 使用它。否則,你應該只使用普通的線程。

0

這裏是一個應用程序的示例代碼,它在下載某物時顯示進度條。使用後臺工作

http://devtoolshed.com/content/c-download-file-progress-bar

和這裏的約後臺工作的快速教程

http://www.dotnetperls.com/backgroundworker

我建議你使用它,當你有一個耗時的操作(下載文件等)和你希望用戶界面處於活動狀態。如果您想要在界面上顯示進度,如在標籤上顯示百分比,或者您想使用進度欄,則該功能非常實用。

我特別與進度控制使用。