5

証明書ストアを初期化し続けX509Store、その方法を使用しない場合Close()、これは何を意味しますか?

ドキュメントに記載されているコード例では、ブロックを使用してメソッドtry..finallyを呼び出していません。Closeこの証明書ストアを解放する必要がある場合、クラスの API が派生するように設計されていないのIDisposableはなぜですか? または、オブジェクトがスコープ外になったときに呼び出される暗黙的なデストラクタがこのクラスにないのはなぜですか?

4

2 に答える 2

15

.NET 4.6 では、X509Storeが変更され、現在実装されていますIDisposable

Dispose実装は を呼び出していますClose()

Microsoft Docsから:

.NET Framework 4.6 以降では、この型は IDisposable インターフェイスを実装しています。型を使い終わったら、直接的または間接的に破棄する必要があります。

于 2016-12-20T11:11:15.530 に答える
1

内部的には、Close メソッドはアンマネージ オブジェクトを指すハンドルを解放します。

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

メモリ リークを避けるために、むしろ Close メソッドを呼び出します。

于 2013-08-27T21:19:30.697 に答える