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.
//Create background worker instance.
BackgroundWorker loadDataBackgroundWorker = new BackgroundWorker();
//Create an event handler that actually does the background work.
loadDataBackgroundWorker.DoWork += new DoWorkEventHandler(
//(Optional) Create an event handler that gets called
// when the background work is complete.
loadDataBackgroundWorker.RunWorkerCompleted += new
//Start execution of the background operation.
void loadDataBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
//Perform complet task here.
//Set e.Result if any result is expected from the task.
object sender, RunWorkerCompletedEventArgs e)
//Check for errors during background operation and re-throw.
if (e.Error != null)
//Update any UI elements here using e.Result.