CA2000: объект расположен не по всем путям исключений
Хотя тема обсуждалась здесь ранее, но предлагаемые решения, похоже, не работают..
У меня есть метод click-click-callback в моем приложении формы, который показывает диалог выбора папки:
private void ButtonSelectReporterFolderClick(object sender, EventArgs e)
{
using (var dialog = new FolderBrowserDialog()) // causes warning
{
if (dialog.ShowDialog() == DialogResult.OK)
{
this.boxReporterFolderPath.Text = dialog.SelectedPath;
}
}
}
Это производит предупреждение:
CA2000: Microsoft.Reliability : In method 'MainWindow.ButtonSelectReporterFolderClick(object, EventArgs)', object '<>g__initLocal' is not disposed along all exception paths. Call System.IDisposable.Dispose on object '<>g__initLocal' before all references to it are out of scope.
Я также пытался использовать try
-finally
блокировать или даже вызывать диалоговое окно. Удалять без каких-либо блоков, все безрезультатно - предупреждение остается всегда на линии инициализации.
1 ответ
Предупреждение не потому, что FolderBrowserDialog не расположен, а потому, что у него есть некоторые открытые члены, которые реализуют интерфейс IDisposable, и вы не утилизируете их отдельно. Конечно, объект FolderBrowserDialog знает, как избавиться от его зависимостей, но у FxCop нет возможности узнать это, поэтому он выдает предупреждение. Просто проигнорируйте предупреждение в вашем случае.