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; }