<PackageReference Include="System.Drawing.Common" Version="10.0.0-rc.2.25502.107" />

DisposableBase

abstract class DisposableBase : IDisposable
Base class for implementing IDisposable with double disposal protection.
using System.Threading; namespace System { internal abstract class DisposableBase : IDisposable { public abstract class Finalizable : DisposableBase { ~Finalizable() { DisposeInternal(false); } } private int _disposedValue; protected bool Disposed => _disposedValue != 0; protected abstract void Dispose(bool disposing); private void DisposeInternal(bool disposing) { if (Interlocked.Exchange(ref _disposedValue, 1) != 1) Dispose(disposing); } public void Dispose() { DisposeInternal(true); GC.SuppressFinalize(this); } } }