protected void ThrowIfDisposed([CallerMemberName] string name = "") { if (Interlocked.CompareExchange(ref _disposeCount, 0, 0) != 0) { throw new ObjectDisposedException(name); } }