Show a Continuous Progress Bar While Processing on a Background Thread : BackgroundWorker « Windows Presentation Foundation « C# / C Sharp






Show a Continuous Progress Bar While Processing on a Background Thread

Show a Continuous Progress Bar While Processing on a Background Thread
  

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     Title="WPF" Height="100" Width="200">
    <StackPanel>
        <ProgressBar Name="progressBar"/>
        <Button Name="button" Click="button_Click">Start</Button>
    </StackPanel>
</Window>
//File:Window.xaml.cs
using System.ComponentModel;
using System.Threading;
using System.Windows;
using System.Windows.Input;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        private BackgroundWorker worker = new BackgroundWorker();

        public Window1()
        {
            InitializeComponent();
            worker.WorkerSupportsCancellation = true;
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            if (!worker.IsBusy)
            {
                this.Cursor = Cursors.Wait;
                progressBar.IsIndeterminate = true;
                button.Content = "Cancel";
                worker.RunWorkerAsync();
            }
            else
            {
                worker.CancelAsync();
            }
        }

        private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.Cursor = Cursors.Arrow;

            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }

            button.Content = "Start";
            progressBar.IsIndeterminate = false;
        }

        private void worker_DoWork(object sender, DoWorkEventArgs e){
            for (int i = 1; i <= 100; i++)
            {
                if (worker.CancellationPending)
                    break;

                Thread.Sleep(50);
            }
        }
    }
}

   
    
  








Related examples in the same category

1.Execute a Method Asynchronously Using a Background Worker ThreadExecute a Method Asynchronously Using a Background Worker Thread
2.Track the Progress of a Background Worker ThreadTrack the Progress of a Background Worker Thread
3.Support the Cancellation of a Background Worker ThreadSupport the Cancellation of a Background Worker Thread
4.Create a Background Worker Thread in XAMLCreate a Background Worker Thread in XAML
5.Show a ProgressBar While Processing on a Background ThreadShow a ProgressBar While Processing on a Background Thread
6.Use BackgroundWorker to run task at backgroundUse BackgroundWorker to run task at background
7.A Cancellable ProgressBar While Processing on a Background ThreadA Cancellable ProgressBar While Processing on a Background Thread
8.Using a BackgroundWorker: progress changed and completedUsing a BackgroundWorker: progress changed and completed
9.Unblock Thread with BackgroundWorkerUnblock Thread with BackgroundWorker