Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Windows;
- using System.ComponentModel;
- using System.Diagnostics;
- namespace BackgroundWorkerRegistration
- {
- public partial class MainWindow : Window
- {
- private readonly BackgroundWorker mBackgroundWorker = new BackgroundWorker();
- public MainWindow()
- {
- InitializeComponent();
- }
- #region UI Event Handlers
- private void Worker1Button_Click(object sender, RoutedEventArgs e)
- {
- RegisterHandlers(Worker1_RunWorkerCompleted, Worker1_DoWork, Worker1_ProgressChanged);
- mBackgroundWorker.RunWorkerAsync();
- }
- private void Worker2Button_Click(object sender, RoutedEventArgs e)
- {
- RegisterHandlers(Worker2_RunWorkerCompleted, Worker2_DoWork, Worker2_ProgressChanged);
- mBackgroundWorker.RunWorkerAsync();
- }
- #endregion
- #region Registration
- private void RegisterHandlers(RunWorkerCompletedEventHandler workerCompletedHandler, DoWorkEventHandler doWorkHandler, ProgressChangedEventHandler progressChangedHandler)
- {
- mBackgroundWorker.RunWorkerCompleted += workerCompletedHandler;
- mBackgroundWorker.DoWork += doWorkHandler;
- mBackgroundWorker.ProgressChanged += progressChangedHandler;
- }
- private void UnregisterHandlers(RunWorkerCompletedEventHandler workerCompletedHandler, DoWorkEventHandler doWorkHandler, ProgressChangedEventHandler progressChangedHandler)
- {
- mBackgroundWorker.RunWorkerCompleted -= workerCompletedHandler;
- mBackgroundWorker.DoWork -= doWorkHandler;
- mBackgroundWorker.ProgressChanged -= progressChangedHandler;
- }
- #endregion
- #region Background Worker Event Handlers
- private void Worker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- UnregisterHandlers(Worker1_RunWorkerCompleted, Worker1_DoWork, Worker1_ProgressChanged);
- Debug.WriteLine("Worker 1: Run Worker Completed");
- }
- private void Worker1_DoWork(object sender, DoWorkEventArgs e)
- {
- Debug.WriteLine("Worker 1: Do Work");
- }
- private void Worker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- Debug.WriteLine("Worker 1: Progress Changed");
- }
- private void Worker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- UnregisterHandlers(Worker2_RunWorkerCompleted, Worker2_DoWork, Worker2_ProgressChanged);
- Debug.WriteLine("Worker 2: Run Worker Completed");
- }
- private void Worker2_DoWork(object sender, DoWorkEventArgs e)
- {
- Debug.WriteLine("Worker 2: Do Work");
- }
- private void Worker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- Debug.WriteLine("Worker 2: Progress Changed");
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement