Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: .NET
Expertise: Intermediate
Aug 11, 2009

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.
}
Jayadev D
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap