Disposable.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. namespace MQTTnet.Internal
  3. {
  4. public abstract class Disposable : IDisposable
  5. {
  6. protected bool IsDisposed { get; private set; } = false;
  7. protected void ThrowIfDisposed()
  8. {
  9. if (IsDisposed)
  10. {
  11. throw new ObjectDisposedException(GetType().Name);
  12. }
  13. }
  14. protected virtual void Dispose(bool disposing)
  15. {
  16. }
  17. // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
  18. // ~Disposable()
  19. // {
  20. // // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
  21. // Dispose(false);
  22. // }
  23. // This code added to correctly implement the disposable pattern.
  24. public void Dispose()
  25. {
  26. // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
  27. if (IsDisposed)
  28. {
  29. return;
  30. }
  31. IsDisposed = true;
  32. Dispose(true);
  33. GC.SuppressFinalize(this);
  34. }
  35. }
  36. }