title: Is it harmless to call GC.SuppressFinalize within the finalizer?
body: <p>Because the <code>finalizer/IDisposable</code> and so-called "<code>IDisposable</code> pattern" topic tends to bring out lots of posturing, pontificating, and militant opinion (<em>not</em>-respectively, <a href="https://stackoverflow.com/questions/36344293/calling-gc-suppressfinalize-from-within-a-finalizer">here</a>, <a href="https://stackoverflow.com/questions/2605412/why-should-we-call-suppressfinalize-when-we-dont-have-a-destructor">here</a>, <a href="https://stackoverflow.com/questions/48694725/is-it-appropriate-to-call-gc-collect-in-a-finalizer">here</a>, and more), I really hesitate to ask this. Hoping to preempt those well-worn debates, I'm keeping to a very simple question which doesn't appear to have a concise answer on StackOverflow...</p>
  
  <p>Is calling <code>GC.SuppressFinalize(this)</code> vacuous once the object's finalizer has begun executing? More specifically or usefully (of course), is it harmless to call <code>GC.SuppressFinalize(this)</code> from within the finalizer itself? (Again, we're not debating any "why" here)</p>
  
  <p>So in other words, beyond the overhead for calling the API and its duly setting a flag in the object header, are there any bad, unwanted, or otherwise tangible correctness or performance effects?</p>