diff --git a/src/HashLib4CSharp/HashLib4CSharp.csproj b/src/HashLib4CSharp/HashLib4CSharp.csproj
index 3d0cae3a3..692e0d8d8 100644
--- a/src/HashLib4CSharp/HashLib4CSharp.csproj
+++ b/src/HashLib4CSharp/HashLib4CSharp.csproj
@@ -28,4 +28,8 @@
+
+
+
+
diff --git a/src/HashLib4CSharp/src/Base/Hash.cs b/src/HashLib4CSharp/src/Base/Hash.cs
index b498e1ef8..f2ea54809 100644
--- a/src/HashLib4CSharp/src/Base/Hash.cs
+++ b/src/HashLib4CSharp/src/Base/Hash.cs
@@ -14,10 +14,11 @@ This library was sponsored by Sphere 10 Software (https://www.sphere10.com)
using System;
using System.Diagnostics;
using HashLib4CSharp.Interfaces;
+using Hydrogen;
namespace HashLib4CSharp.Base
{
- internal abstract class Hash : IHash
+ internal abstract class Hash : SyncDisposable, IHash
{
private const string CloneNotYetImplemented = "Clone not yet implemented for '{0}'";
private const string InvalidBufferSize = "'BufferSize' must be greater than zero";
@@ -55,5 +56,7 @@ public virtual IHash Clone() =>
public abstract void Initialize();
public abstract IHashResult TransformFinal();
- }
+
+ protected override void FreeManagedResources() {}
+ }
}
\ No newline at end of file
diff --git a/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs b/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs
index 0f25915d4..fb995f375 100644
--- a/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs
+++ b/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs
@@ -30,12 +30,6 @@ protected MultipleTransformNonBlock(int hashSize, int blockSize) : base(hashSize
private MemoryStream Buffer { get; }
- ~MultipleTransformNonBlock()
- {
- Buffer?.Flush();
- Buffer?.Close();
- }
-
private byte[] Aggregate()
{
var aggregate = new byte[0];
@@ -97,5 +91,11 @@ public override IHashResult TransformFinal()
return result;
}
protected abstract IHashResult ComputeAggregatedBytes(byte[] data);
- }
+
+ protected override void FreeManagedResources()
+ {
+ Buffer?.Flush();
+ Buffer?.Close();
+ }
+ }
}
\ No newline at end of file
diff --git a/src/HashLib4CSharp/src/Interfaces/IHash.cs b/src/HashLib4CSharp/src/Interfaces/IHash.cs
index 1abe29776..185cc7df8 100644
--- a/src/HashLib4CSharp/src/Interfaces/IHash.cs
+++ b/src/HashLib4CSharp/src/Interfaces/IHash.cs
@@ -22,7 +22,7 @@ This library was sponsored by Sphere 10 Software (https://www.sphere10.com)
namespace HashLib4CSharp.Interfaces
{
- public interface IHash
+ public interface IHash : IDisposable
{
string Name { get; }
int BlockSize { get; }