Advertisement
Guest User

BackgroundWorker Registration

a guest
Jan 11th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.02 KB | None | 0 0
  1. using System.Windows;
  2. using System.ComponentModel;
  3. using System.Diagnostics;
  4.  
  5. namespace BackgroundWorkerRegistration
  6. {
  7.     public partial class MainWindow : Window
  8.     {
  9.         private readonly BackgroundWorker mBackgroundWorker = new BackgroundWorker();
  10.  
  11.         public MainWindow()
  12.         {
  13.             InitializeComponent();
  14.         }
  15.  
  16.         #region UI Event Handlers
  17.  
  18.         private void Worker1Button_Click(object sender, RoutedEventArgs e)
  19.         {
  20.             RegisterHandlers(Worker1_RunWorkerCompleted, Worker1_DoWork, Worker1_ProgressChanged);
  21.  
  22.             mBackgroundWorker.RunWorkerAsync();
  23.         }
  24.  
  25.         private void Worker2Button_Click(object sender, RoutedEventArgs e)
  26.         {
  27.             RegisterHandlers(Worker2_RunWorkerCompleted, Worker2_DoWork, Worker2_ProgressChanged);
  28.  
  29.             mBackgroundWorker.RunWorkerAsync();
  30.         }
  31.  
  32.         #endregion
  33.  
  34.         #region Registration
  35.  
  36.         private void RegisterHandlers(RunWorkerCompletedEventHandler workerCompletedHandler, DoWorkEventHandler doWorkHandler, ProgressChangedEventHandler progressChangedHandler)
  37.         {
  38.             mBackgroundWorker.RunWorkerCompleted += workerCompletedHandler;
  39.             mBackgroundWorker.DoWork += doWorkHandler;
  40.             mBackgroundWorker.ProgressChanged += progressChangedHandler;
  41.         }
  42.  
  43.         private void UnregisterHandlers(RunWorkerCompletedEventHandler workerCompletedHandler, DoWorkEventHandler doWorkHandler, ProgressChangedEventHandler progressChangedHandler)
  44.         {
  45.             mBackgroundWorker.RunWorkerCompleted -= workerCompletedHandler;
  46.             mBackgroundWorker.DoWork -= doWorkHandler;
  47.             mBackgroundWorker.ProgressChanged -= progressChangedHandler;
  48.         }
  49.  
  50.         #endregion
  51.  
  52.         #region Background Worker Event Handlers
  53.  
  54.         private void Worker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  55.         {
  56.             UnregisterHandlers(Worker1_RunWorkerCompleted, Worker1_DoWork, Worker1_ProgressChanged);
  57.  
  58.             Debug.WriteLine("Worker 1: Run Worker Completed");
  59.         }
  60.  
  61.         private void Worker1_DoWork(object sender, DoWorkEventArgs e)
  62.         {
  63.             Debug.WriteLine("Worker 1: Do Work");
  64.         }
  65.  
  66.         private void Worker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
  67.         {
  68.             Debug.WriteLine("Worker 1: Progress Changed");
  69.         }
  70.  
  71.         private void Worker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  72.         {
  73.             UnregisterHandlers(Worker2_RunWorkerCompleted, Worker2_DoWork, Worker2_ProgressChanged);
  74.  
  75.             Debug.WriteLine("Worker 2: Run Worker Completed");
  76.         }
  77.  
  78.         private void Worker2_DoWork(object sender, DoWorkEventArgs e)
  79.         {
  80.             Debug.WriteLine("Worker 2: Do Work");
  81.         }
  82.  
  83.         private void Worker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
  84.         {
  85.             Debug.WriteLine("Worker 2: Progress Changed");
  86.         }
  87.  
  88.         #endregion
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement