.NET 3.5 Dispose Registry Key

非 Y 不嫁゛ 提交于 2019-12-10 09:26:31

问题


I have the following code:

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

I am running a static analysis tool on my code and it is giving me a defect saying that I am returning from the medthod without disposing installKey. I know you can call Dispose() on RegistryKey in .NET 4.0 or later but my code runs on .NET 3.5.

Does anybody know the best way to Dispose this RegistryKey and keep my static analysis tool happy?


回答1:


You should wrap your code within a using block, which will implicitly call Dispose for you . It's unclear what static analysis tool you're using, but hopefully it understands using:

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

Note that you can also call Dispose explicitly, but you need to cast RegistryKey to IDisposable first:

((IDisposable)installKey).Dispose()



回答2:


Of course it can be disposed in version 3.5! See documentation here.

Use a using block, as in trhe MSDN example here, or simply call Dispose() like in any other IDisposable object.



来源:https://stackoverflow.com/questions/9904930/net-3-5-dispose-registry-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!