Click here to Skip to main content
Click here to Skip to main content

BackgroundWorker and ProgressBar demo

By , 23 May 2010
 
This gets asked almost daily so I've written this short demonstration code to demonstrate how to use a System.ComponentModel.BackgroundWorker in combination with a System.Windows.Forms.ProgressBar. All the code is commented so the flow/steps should be easy to understand.
 
Just drop a ProgressBar (progressBar1) and a BackgroundWorker (backgroundWorker1) onto your form and copy and paste this code to see it in action.
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Shown += new EventHandler(Form1_Shown);
 
        // To report progress from the background worker we need to set this property
        backgroundWorker1.WorkerReportsProgress = true;
        // This event will be raised on the worker thread when the worker starts
        backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
        // This event will be raised when we call ReportProgress
        backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
    }
    void Form1_Shown(object sender, EventArgs e)
    {
        // Start the background worker
        backgroundWorker1.RunWorkerAsync();
    }
    // On worker thread so do our thing!
    void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        // Your background task goes here
        for (int i = 0; i <= 100; i++)
        {
            // Report progress to 'UI' thread
            backgroundWorker1.ReportProgress(i);
            // Simulate long task
            System.Threading.Thread.Sleep(100);
        }
    }
    // Back on the 'UI' thread so we can update the progress bar
    void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // The progress percentage is a property of e
        progressBar1.Value = e.ProgressPercentage;
    }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

DaveyM69
United Kingdom United Kingdom
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionVB.Net Code for BackgroundWorker and ProgressBar DemomemberMember 886365516 May '13 - 10:34 
AnswerRe: VB.Net Code for BackgroundWorker and ProgressBar DemomentorDaveyM6920 May '13 - 2:45 
GeneralRe: VB.Net Code for BackgroundWorker and ProgressBar DemomemberMember 886365520 May '13 - 17:59 
GeneralMy vote of 5memberaGISer24 Apr '13 - 22:00 
QuestionI am new to Background Worker and Progress Bar Herememberprashantn.pol1 Jan '13 - 23:00 
GeneralMy vote of 5membertausif_91 Aug '12 - 3:57 
GeneralMy vote of 4membersirama200430 Jul '12 - 23:01 
GeneralMy vote of 4memberprasad kolekar6015 Jun '12 - 1:26 
GeneralReason for my vote of 5 Simple and to the point.memberProEnggSoft24 Feb '12 - 4:18 
GeneralReason for my vote of 5 Simple, straightforward, well commen...member5cw12 Feb '12 - 11:51 
GeneralThanks a whole lot, I'm a newbe, and after searching thru 30...memberInflicter15 Sep '11 - 8:48 
GeneralReason for my vote of 5 Simple to the point In TitlememberAirelement07414 Jun '11 - 7:17 
GeneralReason for my vote of 4 practicalmemberphiyano2 Aug '10 - 17:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130516.1 | Last Updated 23 May 2010
Article Copyright 2010 by DaveyM69
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid