title: What's the point of overriding Dispose(bool disposing) in .NET?
body: <p>If I write a class in C# that implements IDisposable, why isn't is sufficient for me to simply implement </p>
  
  <pre><code>public void Dispose(){ ... } 
  </code></pre>
  
  <p>to handle freeing any unmanaged resources?</p>
  
  <p>Is</p>
  
  <pre><code>protected virtual void Dispose(bool disposing){ ... }
  </code></pre>
  
  <p>always necessary, sometimes necessary, or something else altogether?</p>