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 нет возможности узнать это, поэтому он выдает предупреждение. Просто проигнорируйте предупреждение в вашем случае.

Другие вопросы по тегам