Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 不使用X509Store.Close方法意味着什么?_.net_X509certificate_X509certificate2 - Fatal编程技术网

.net 不使用X509Store.Close方法意味着什么?

.net 不使用X509Store.Close方法意味着什么?,.net,x509certificate,x509certificate2,.net,X509certificate,X509certificate2,如果我一直初始化X509Store证书存储,并且不使用它们的方法,这意味着什么 在代码示例中,他们不使用try..finally块调用Close方法。如果需要释放此证书存储,为什么设计用于派生自IDisposable的类的API不释放,或者为什么当对象超出范围时,此类没有调用隐式析构函数?在内部,Close方法释放指向非托管对象的句柄 public void Close() { if ((this.m_safeCertStoreHandle != null) && !th

如果我一直初始化
X509Store
证书存储,并且不使用它们的方法,这意味着什么


在代码示例中,他们不使用
try..finally
块调用
Close
方法。如果需要释放此证书存储,为什么设计用于派生自
IDisposable
的类的API不释放,或者为什么当对象超出范围时,此类没有调用隐式析构函数?

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

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

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

在.NET4.6中,
X509Store
被修改,现在实现了
IDisposable

Dispose
实现正在调用
Close()

发件人:

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


他们为什么不在析构函数中这样做,这实际上是我的问题。顺便说一句,您从哪里获得源代码?在.Net中,IDisposable优于析构函数。请参见:我使用Ilspy反编译器获得代码。那么,你认为为什么这个API不是用IDisposable设计的呢?如果不深入了解源代码,我就说不出来了。即使是微软的代码也不是完美的。但对您来说,调用Close()比完全使用或try/finally块要短:-)要确认@Shay关于Dispose调用Close的说法,请参阅