.NET 3.5 Dispose注册表项

Duk*_*ade 4 c# dispose static-analysis registrykey

我有以下代码:

RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey);
Run Code Online (Sandbox Code Playgroud)

我在我的代码上运行一个静态分析工具,它给了我一个缺陷,说我从没有处理installKey的方法返回.我知道您可以在.NET 4.0或更高版本的RegistryKey上调用Dispose(),但我的代码在.NET 3.5上运行.

有没有人知道处理这个RegistryKey并让我的静态分析工具满意的最佳方法?

Tun*_*ung 8

您应该将代码包装在一个using块中,这将隐式地Dispose为您调用.目前还不清楚你正在使用什么静态分析工具,但希望它能理解using:

using (RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey))
{
    // Your code here
}
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以Dispose显式调用,但需要先强制转换RegistryKeyIDisposable:

((IDisposable)installKey).Dispose()
Run Code Online (Sandbox Code Playgroud)