为什么HashAlgorithm类实现IDisposable?

问题描述 投票:2回答:1

[使用MD5CryptoServiceProvider时,我发现可能需要对其进行处理,因为它继承自实现HashAlgorithmIDisposable类。但是,the example in the docs没有处理它。

我的问题是为什么HashAlgorithm类实现IDisposable?难道不是仅对内存中发生的某些计算进行哈希处理吗?哈希中可以使用哪种非托管资源?

c# .net hash idisposable
1个回答
2
投票

您可以看一下sources

        [System.Security.SecuritySafeCritical] // overrides public transparent member
        protected override void Dispose(bool disposing)
        {
            if (_safeHashHandle != null && !_safeHashHandle.IsClosed)
                _safeHashHandle.Dispose();
            base.Dispose(disposing);
        }

它正在处理内部SafeHashHandle实例,该实例用于包装本机操作系统句柄。使用后,您必须正确处理并释放此句柄

        [System.Security.SecurityCritical]
        protected override bool ReleaseHandle()
        {
            FreeHash(handle);
            return true;
        }

此方法是基类ReleaseHandle()中的抽象SafeHandle方法的替代。您可以在MSDN

上了解有关此类的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.