4

次のコードがあります。

RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey);

コードで静的分析ツールを実行していますが、 installKey を破棄せずにメソッドから戻っているという欠陥が表示されます。.NET 4.0 以降の RegistryKey で Dispose() を呼び出すことができることはわかっていますが、私のコードは .NET 3.5 で実行されます。

この RegistryKey を破棄し、静的分析ツールを快適に保つための最良の方法を知っている人はいますか?

4

2 に答える 2

8

コードをブロック内にラップする必要があります。usingこれにより、暗黙的に you が呼び出さDisposeれます。使用している静的分析ツールは不明ですが、理解できることを願っていますusing:

using (RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey))
{
    // Your code here
}

明示的に呼び出すこともできますが、最初DisposeにキャストRegistryKeyする必要があることに注意してください。IDisposable

((IDisposable)installKey).Dispose()
于 2012-03-28T09:51:13.167 に答える
2

もちろんバージョン3.5で処分可能!こちらのドキュメントを参照してください。

ここusingのMSDN の例のようにブロックを使用するか、他の IDisposable オブジェクトのように単に Dispose() を呼び出します。

于 2012-03-28T09:50:27.147 に答える