diff --git a/src/ImageSharp/Image.cs b/src/ImageSharp/Image.cs
index a3b425233b..724fa4f96b 100644
--- a/src/ImageSharp/Image.cs
+++ b/src/ImageSharp/Image.cs
@@ -87,7 +87,8 @@ namespace SixLabors.ImageSharp
return;
}
- this.DisposeManaged();
+ this.Dispose(true);
+ GC.SuppressFinalize(this);
this.isDisposed = true;
}
@@ -150,7 +151,8 @@ namespace SixLabors.ImageSharp
///
/// Internal routine for freeing managed resources called from
///
- protected abstract void DisposeManaged();
+ /// /// Whether to dispose of managed objects.
+ protected abstract void Dispose(bool disposing);
///
/// Throws if the image is disposed.
diff --git a/src/ImageSharp/ImageFrameCollection.cs b/src/ImageSharp/ImageFrameCollection.cs
index ed36c16539..16d4285782 100644
--- a/src/ImageSharp/ImageFrameCollection.cs
+++ b/src/ImageSharp/ImageFrameCollection.cs
@@ -174,7 +174,8 @@ namespace SixLabors.ImageSharp
return;
}
- this.DisposeManaged();
+ this.Dispose(true);
+ GC.SuppressFinalize(this);
this.isDisposed = true;
}
@@ -204,7 +205,8 @@ namespace SixLabors.ImageSharp
///
/// Internal routine for freeing managed resources called from
///
- protected abstract void DisposeManaged();
+ /// /// /// Whether to dispose of managed objects.
+ protected abstract void Dispose(bool disposing);
///
/// Implements .
diff --git a/src/ImageSharp/ImageFrameCollection{TPixel}.cs b/src/ImageSharp/ImageFrameCollection{TPixel}.cs
index 13ae092c42..da024c9176 100644
--- a/src/ImageSharp/ImageFrameCollection{TPixel}.cs
+++ b/src/ImageSharp/ImageFrameCollection{TPixel}.cs
@@ -396,14 +396,17 @@ namespace SixLabors.ImageSharp
}
///
- protected override void DisposeManaged()
+ protected override void Dispose(bool disposing)
{
- foreach (ImageFrame f in this.frames)
+ if (disposing)
{
- f.Dispose();
- }
+ foreach (ImageFrame f in this.frames)
+ {
+ f.Dispose();
+ }
- this.frames.Clear();
+ this.frames.Clear();
+ }
}
private ImageFrame CopyNonCompatibleFrame(ImageFrame source)
diff --git a/src/ImageSharp/Image{TPixel}.cs b/src/ImageSharp/Image{TPixel}.cs
index 9e3ad2636f..e42022729f 100644
--- a/src/ImageSharp/Image{TPixel}.cs
+++ b/src/ImageSharp/Image{TPixel}.cs
@@ -268,7 +268,13 @@ namespace SixLabors.ImageSharp
}
///
- protected override void DisposeManaged() => this.frames.Dispose();
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ this.frames.Dispose();
+ }
+ }
///
public override string ToString() => $"Image<{typeof(TPixel).Name}>: {this.Width}x{this.Height}";