7

トピックは以前にここで説明されていますが、提案されたソリューションは機能していないようです。

フォームアプリケーションにボタンクリックコールバックメソッドがあり、フォルダピッカーダイアログが表示されます。

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ブロックを使用したり、ダイアログを呼び出したりしてみました。ブロックなしで破棄しても、まったく役に立ちません。警告は常に初期化の行に残ります。

4

1 に答える 1

5

警告は、FolderBrowserDialogが破棄されていないためではなく、IDisposableインターフェイスを実装するパブリックメンバーがいくつかあり、それらを個別に破棄していないためです。もちろん、FolderBrowserDialogオブジェクトはその依存関係を破棄する方法を知っていますが、FxCopにはそれを知る方法がないため、警告が表示されます。あなたの場合の警告は無視してください。

于 2011-07-22T11:16:44.383 に答える