What is BackgroundWorker thread in C#?

If you want an async thread to be run in a background, System.ComponentModel provides a BackgroundWorker thread for us. Lets take a simple example.

The code is straight forward.
Create a BackgroundWorker object.
Subscribe to the DoWorkEventHandler


namespace My_Samples
{
    using System;
    using System.ComponentModel;

    class Program
    {
        static void Main(string[] args)
        {
            BackgroundWorker worker = new BackgroundWorker();
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerAsync();
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Main - " + i.ToString());
                System.Threading.Thread.Sleep(100);
            }

            Console.ReadLine();
        }
        static void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("worker_DoWork - " + i.ToString());
                System.Threading.Thread.Sleep(100);
            }
        }
    }
}

The output is something similar below.

worker_DoWork - 0
Main - 0
worker_DoWork - 1
Main - 1
worker_DoWork - 2
Main - 2
worker_DoWork - 3
Main - 3
worker_DoWork - 4
Main - 4
worker_DoWork - 5
Main - 5
worker_DoWork - 6
Main - 6
worker_DoWork - 7
Main - 7
worker_DoWork - 8
Main - 8
worker_DoWork - 9
Main - 9

No comments:

Post a Comment