不使用X509Store.Close方法的含义是什么?

时间:2013-08-27 21:11:15

标签: .net x509certificate x509certificate2

如果我不断初始化X509Store证书商店并且不使用他们的Close()方法,那么这意味着什么呢?

在代码示例given in documentation中,他们不使用try..finally块来调用Close方法。如果这个证书存储是需要释放的东西,那么为什么这个类的API不能从IDisposable派生,或者为什么这个类没有在对象超出范围时调用的隐式析构函数?

2 个答案:

答案 0 :(得分:8)

在.NET 4.6中,X509Store已被修改,现在正在实施IDisposable

Dispose实施正在调用Close()

来自MSDN

  

从.NET Framework 4.6开始,此类型实现IDisposable接口。使用完该类型后,应直接或间接处理。

答案 1 :(得分:1)

在内部,Close方法释放指向非托管对象的句柄。

public void Close()
{
    if ((this.m_safeCertStoreHandle != null) && !this.m_safeCertStoreHandle.IsClosed)
    {
        this.m_safeCertStoreHandle.Dispose();
    }
}

我宁愿调用Close方法来避免内存泄漏。