title: What's the purpose of GC.SuppressFinalize(this) in Dispose() method?
body: <p>I have the following code:</p>
  
  <pre><code>public void Dispose()
  {
      if (_instance != null)
      {
          _instance = null;
          // Call GC.SupressFinalize to take this object off the finalization
          // queue and prevent finalization code for this object from
          // executing a second time.
          GC.SuppressFinalize(this);
      }
  }
  </code></pre>
  
  <p>Although there is a comment that explains purpose of that GC-related call, I still don't understand why it's there.</p>
  
  <p>Isn't object destined for garbage collection once all instances cease from existence, like, when used in <code>using</code> block?</p>
  
  <p>What's the use case scenario where this would play important role?</p>