In this question @Jon skeet referenced this old blog post by the authority Chris Brumme.
I was wondering, do I need to follow all calls to GC.SuppressFinalize(this)
with a GC.KeepAlive(this)
to avoid weird race conditions where a finalizer can be invoked during the time a disposer is running in heavily multithreaded applications?
If so, can you come up with a sample program that exposes this bug?