Memory Management is know issue while using WPF, but I've read workarounds for this problems.

In my case I'm struggling with Events, I want to make sure the following piece of code is creating, and eliminating the event handlers.

I'm creating and using a BackgroundWorker to perform some actions.

Here's the code, I'll place the explanation after it.

csharp Code:
  1. //I'm using Static Void because It is contained within a static class
  2. //I'm creating a background worker for each void call
  3. public static void LoadData()
  4. {
  5.      BackgroundWorker data_worker = new BackgroundWorker();
  6.      data_worker.DoWork += new DoWorkEventHandler(data_worker_DoWork);
  7.      data_worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(data_worker_RunWorkerCompleted);
  8.      data_worker.WorkerReportsProgress = true;
  9.      data_worker.ProgressChanged += new ProgressChangedEventHandler(data_worker_ProgressChanged);
  10.      data_worker.RunWorkerAsync();
  11. }
  12.  
  13. //Background Worker events
  14.  
  15. //**DoWork
  16. static void data_worker_DoWork(object sender, DoWorkEventArgs e)
  17. {
  18.      //Perform Work
  19. }
  20. //**Completed
  21.  static void data_worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  22. {
  23.  
  24.      // Should Clear Event Handlers ?
  25.      // ((BackgroundWorker)sender).DoWork -= new
  26.      // DoWorkEventHandler(data_worker_DoWork); ?
  27.      //Work Completed
  28. }

Is this code creating the background worker in a way it will be destroyed after it's work has been performed ? If not what should I do to make it so.