Home > DeveloperSection > Forums > How to use WPF Background Worker
Takeshi Okada
Takeshi Okada

Total Post:89

Points:629
Posted on    September-24-2013 8:37 AM

 WPF WPF 
Ratings:


 1 Reply(s)
 895  View(s)
Rate this:

I am a beginner with WPF, in my application I need to preform a series of Initialisation steps, these take 7-8 seconds to complete during which my UI becomes unresponsive. To resolve this I preform the initialisation in a separate thread:

    public void Initialization()

    {

        Thread initThread = new Thread(new ThreadStart(InitializationThread));

        initThread.Start();

    }

    public void InitializationThread()

    {

        outputMessage("Initializing...");

        //DO INITIALIZATION

        outputMessage("Initialization Complete");

    }

I have read a few articles about the BackgroundWorker and how it should allow me to keep my application responsive without ever having to write a thread to preform lengthy tasks but I haven't had any success trying to implement it, could anyone tell how I would do this using the BackgroundWorker?



Pravesh Singh

Total Post:411

Points:2881
Posted on    September-24-2013 8:54 AM

Hi Takeshi,

Add following using: using System.ComponentModel;

1.Declare backgrownd worker:

private readonly BackgroundWorker worker = new BackgroundWorker();

2.Subscribe to events:

worker.DoWork += worker_DoWork;

worker.RunWorkerCompleted += worker_RunWorkerCompleted;

3.Implement two methods:

private void worker_DoWork(object sender, DoWorkEventArgs e)

{

   // run all background tasks here

}

private void worker_RunWorkerCompleted(object sender,

                                       RunWorkerCompletedEventArgs e)

{

  //update ui once worker complete his work

}

4.Run worker async whenever your need.

worker.RunWorkerAsync();

Also if you want to report process progress you should subscribe to ProgressChanged event and use ReportProgress(Int32) in DoWork method to raise an event. Also set following: worker.WorkerReportsProgress = true; (thanks to @zagy)

Hope this help.


Don't want to miss updates? Please click the below button!

Follow MindStick