.NET 3.5 Утилизировать раздел реестра - PullRequest
4 голосов
/ 28 марта 2012

У меня есть следующий код:

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

Я использую инструмент статического анализа для своего кода, и он дает мне дефект, говорящий о том, что я возвращаюсь из medthod без удаления installKey .Я знаю, что вы можете вызывать Dispose () для RegistryKey в .NET 4.0 или более поздней версии, но мой код работает в .NET 3.5.

Кто-нибудь знает лучший способ избавиться от этого RegistryKey и сделать мой инструмент статического анализа счастливым?

Ответы [ 2 ]

8 голосов
/ 28 марта 2012

Вы должны заключить свой код в блок using, который будет неявно вызывать Dispose для вас.Неясно, какой инструмент статического анализа вы используете, но, надеюсь, он понимает using:

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

Обратите внимание, что вы также можете явно вызвать Dispose, но вам необходимо привести RegistryKey к IDisposable первый:

((IDisposable)installKey).Dispose()
2 голосов
/ 28 марта 2012

Конечно, это может быть устранено в версии 3.5! Смотри документацию здесь .

Используйте блок using, как в примере MSDN здесь , или просто вызовите Dispose (), как в любом другом объекте IDisposable.

...