public void Dispose_MRE() { int newVal = Interlocked.CompareExchange(ref IsDisposed, 1, 0); if (newVal == 0 && mre != null) { mre.Set(); mre.Dispose(); mre = null; } }