[使用MD5CryptoServiceProvider
时,我发现可能需要对其进行处理,因为它继承自实现HashAlgorithm
的IDisposable
类。但是,the example in the docs没有处理它。
我的问题是为什么HashAlgorithm
类实现IDisposable
?难道不是仅对内存中发生的某些计算进行哈希处理吗?哈希中可以使用哪种非托管资源?
您可以看一下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