title: Unsubscribing event handlers using GetInvocationList
body: <p>I have some events in my base class that I want to apply the following pattern to within IDisposable or in the Finalizer.</p>
  
  <pre><code>var onCategorizedMessage = this.OnCategorizedMessage.GetInvocationList().ToList();
  foreach (var item in onCategorizedMessage)
      this.OnCategorizedMessage -= item;
  </code></pre>
  
  <p>I would repeat this code once per event.  </p>
  
  <p>Is this a reasonable and robust way of handling unsubscribing from Events to prevent memory leaks?</p>