title: Do you need to remove an event handler in the destructor?
body: <p>I use some <code>UserControls</code> which get created and destroyed within my application during runtime (by creating and closing subwindows with these controls inside).<br>
  It's a WPF UserControl and inherits from <code>System.Windows.Controls.UserControl</code>. There is no <code>Dispose()</code> method I could override.<br>
  <code>PPMM</code> is a <code>Singleton</code> with the same lifetime as my application.<br>
  Now in the constructor of my (WPF) <code>UserControl</code>, I add an event handler:</p>
  
  <pre><code>public MyControl()
  {
      InitializeComponent();
  
      // hook up to an event
      PPMM.FactorChanged += new ppmmEventHandler(PPMM_FactorChanged);
  }
  </code></pre>
  
  <p>I got used to removing such event handler in the destructor:</p>
  
  <pre><code>~MyControl()
  {
      // hook off of the event
      PPMM.FactorChanged -= new ppmmEventHandler(PPMM_FactorChanged);
  }
  </code></pre>
  
  <p>Today I stumbled upon this and wondered:</p>
  
  <p><strong>1) Is this neccessary? Or does the GC take care of it?</strong></p>
  
  <p><strong>2) Does this even work? Or would I have to store the newly created <code>ppmmEventHandler</code>?</strong></p>
  
  <p>I'm looking forward to your answers.</p>