Launching an Asynchronous Operation Using BackgroundWorker

Launching an Asynchronous Operation Using BackgroundWorker

The BackgroundWorker class in the System.ComponentModel namespace (in the .NET Framework 2.0 and later) lets you launch time-consuming operations on a separate thread, which helps keep your user interface (UI) responsive. In contrast, running long time-consuming operations on the main thread blocks the whole UI, essentially “freezing” it until the operation is complete.

The following example shows how to launch a simple background operation using BackgroundWorker:

// Load complex time-consuming data.void LoadData(){   //Create background worker instance.   BackgroundWorker loadDataBackgroundWorker = new BackgroundWorker();   //Create an event handler that actually does the background work.   loadDataBackgroundWorker.DoWork += new DoWorkEventHandler(      loadDataBackgroundWorker_DoWork);   //(Optional) Create an event handler that gets called    // when the background work is complete.   loadDataBackgroundWorker.RunWorkerCompleted += new       RunWorkerCompletedEventHandler(loadDataBackgroundWorker_RunWorkerCompleted);   //Start execution of the background operation.    loadDataBackgroundWorker.RunWorkerAsync();}void loadDataBackgroundWorker_DoWork(object sender, DoWorkEventArgs e){   //Perform complet task here.   //Set e.Result if any result is expected from the task.}void loadDataBackgroundWorker_RunWorkerCompleted(    object sender, RunWorkerCompletedEventArgs e){   //Check for errors during background operation and re-throw.   if (e.Error != null)      throw e.Error;             //Update any UI elements here using e.Result.}


Share the Post: