BackgroundWorker Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Runs an operation on a separate thread.
Assembly: System (in System.dll)
The BackgroundWorker type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | CancellationPending | Gets a value that indicates whether the application has requested cancellation of a background operation. |
![]() | IsBusy | Gets a value that indicates whether the BackgroundWorker is running a background operation. |
![]() | WorkerReportsProgress | Gets or sets a value that indicates whether the BackgroundWorker can report progress updates. |
![]() | WorkerSupportsCancellation | Gets or sets a value that indicates whether the BackgroundWorker supports asynchronous cancellation. |
| Name | Description | |
|---|---|---|
![]() | CancelAsync | Requests cancellation of a pending background operation. |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | OnDoWork | Raises the DoWork event. |
![]() | OnProgressChanged | Raises the ProgressChanged event. |
![]() | OnRunWorkerCompleted | Raises the RunWorkerCompleted event. |
![]() | ReportProgress(Int32) | Raises the ProgressChanged event. |
![]() | ReportProgress(Int32, Object) | Raises the ProgressChanged event. |
![]() | RunWorkerAsync() | Starts running a background operation. |
![]() | RunWorkerAsync(Object) | Starts running a background operation and includes a parameter for use by the background operation. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() | DoWork | Occurs when RunWorkerAsync is called. |
![]() | ProgressChanged | Occurs when ReportProgress is called. |
![]() | RunWorkerCompleted | Occurs when the background operation has completed, has been canceled, or has raised an exception. |
The BackgroundWorker class allows you to run an operation on a separate, dedicated thread. Time-consuming operations, such as downloads and database transactions, can cause your user interface to stop responding. When you want a responsive user interface and you must perform time-consuming operations, the BackgroundWorker class provides a convenient solution.
To run an operation in the background, create a BackgroundWorker. You can listen for events that report the progress of your operation and signal when your operation is completed.
To set up a background operation, add an event handler for the DoWork event. Call your time-consuming operation in this event handler. To start the background operation, call the RunWorkerAsync method. To receive notifications of progress updates, handle the ProgressChanged event. To receive a notification when the operation is completed, handle the RunWorkerCompleted event.
Note: |
|---|
You must be careful not to manipulate any user-interface objects in your DoWork event handler. Instead, communicate to the user interface through the ProgressChanged and RunWorkerCompleted events. |
If your background operation requires a parameter, call RunWorkerAsync with your parameter. Inside the DoWork event handler, you can extract the parameter from the DoWorkEventArgs::Argument property.
For more information about BackgroundWorker, see How to use a background worker for Windows Phone 8.
The following code example demonstrates the use of the BackgroundWorker class for running a time-consuming operation asynchronously. The time-consuming operation is simulated by calling the background thread's Sleep method. The example periodically reports progress and permits the operation to be canceled.
<phone:PhoneApplicationPage x:Class="SL_BackgroundWorker_CS.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10" > <Button x:Name="buttonStart" Content="Start" Click="buttonStart_Click" Width="200" /> <Button x:Name="buttonCancel" Content="Cancel" Click="buttonCancel_Click" Width="200" /> </StackPanel> <StackPanel Margin="10,50,0,0" Orientation="Horizontal"> <TextBlock Text="Progress: " /> <TextBlock x:Name="tbProgress" /> </StackPanel> </StackPanel> </Grid> </phone:PhoneApplicationPage>




Note: