CA2000: объект расположен не по всем путям исключений - PullRequest
7 голосов
/ 22 июля 2011

Хотя эта тема уже обсуждалась здесь ранее, но предлагаемые решения, похоже, не работают ..

У меня в приложении формы есть метод call-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 Ответ

5 голосов
/ 22 июля 2011

Предупреждение не потому, что FolderBrowserDialog не расположен, а потому, что у него есть некоторые открытые члены, которые реализуют интерфейс IDisposable, и вы не утилизируете их отдельно.Конечно, объект FolderBrowserDialog знает, как избавиться от его зависимостей, но у FxCop нет возможности узнать это, поэтому он выдает предупреждение.Просто проигнорируйте предупреждение в вашем случае.

...