Show a ProgressBar While Processing on a Background Thread : ProgressBar « UI Controls « Silverlight






Show a ProgressBar While Processing on a Background Thread

    

<UserControl x:Class='SilverlightApplication3.MainPage'
    xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
    xmlns:d='http://schemas.microsoft.com/expression/blend/2008' 
    xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' 
    mc:Ignorable='d' 
    d:DesignWidth='640' 
    d:DesignHeight='480'>
    <StackPanel>
        <ProgressBar Name="progressBar" Margin="4"/>
        <Button Name="button" Click="button_Click">Start</Button>
    </StackPanel>
</UserControl>

//File:Window.xaml.cs
using System.ComponentModel;
using System.Threading;
using System.Windows;
using System.Windows.Input;
using System;

using System.Windows.Controls;
namespace SilverlightApplication3
{    
    public partial class MainPage : UserControl
    {
        private BackgroundWorker worker = new BackgroundWorker();

        public MainPage()
        {
            InitializeComponent();
            worker.WorkerReportsProgress = true;
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
            worker.ProgressChanged += worker_ProgressChanged;
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            worker.RunWorkerAsync();
            this.Cursor = Cursors.Wait;
            button.IsEnabled = false;
        }

        private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.Cursor = Cursors.Arrow;
            if(e.Error != null)
                Console.WriteLine(e.Error.Message);
            button.IsEnabled = true;
        }
        private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            for(int i = 1; i <= 100; i++)
            {
                Thread.Sleep(100);
                worker.ReportProgress(i);
            }
        }

        private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar.Value = e.ProgressPercentage;
        }
    }
}

   
    
    
    
  








Related examples in the same category

1.Binding ProgressBar with SliderBinding ProgressBar with Slider
2.ProgressBar and Animation
3.A basic ProgressBarA basic ProgressBar
4.An indeterminate ProgressBarAn indeterminate ProgressBar
5.IsIndeterminate ProgressBarIsIndeterminate ProgressBar
6.A Cancellable ProgressBar While Processing on a Background Thread
7.Show a Continuous Progress Bar While Processing on a Background Thread