Ahm*_*gle 2 .net x509certificate2 x509certificate
如果我继续初始化X509Store证书库并且不使用他们的Close()方法,那么这意味着什么呢?
在文档中给出的代码示例中,它们不使用try..finally块来调用Close方法.如果这个证书存储是需要释放的东西,为什么这个类的API不是为了派生而来的IDisposable?为什么这个类没有在对象超出范围时调用的隐式析构函数?
Sha*_*hay 10
在.NET 4.6中,X509Store已修改并正在实施IDisposable.
该Dispose实现调用Close().
来自MSDN:
从.NET Framework 4.6开始,此类型实现IDisposable接口.使用完该类型后,应直接或间接处理.
在内部,Close 方法释放指向非托管对象的句柄。
public void Close()
{
if ((this.m_safeCertStoreHandle != null) && !this.m_safeCertStoreHandle.IsClosed)
{
this.m_safeCertStoreHandle.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
我宁愿调用 Close 方法来避免内存泄漏。