c# – CA2000:未沿所有异常路径放置的对象

前端之家收集整理的这篇文章主要介绍了c# – CA2000:未沿所有异常路径放置的对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
虽然之前已讨论过主题,但建议的解决方案似乎不起作用..

我的表单应用程序中有一个按钮单击回调方法,它显示了一个文件夹选择器对话框:

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:在方法’MainWindow.ButtonSelectReporterFolderClick(object,EventArgs)’中,对象’<> g__initLocal’未沿所有异常路径放置.在对所有引用超出范围之前,调用System.IDisposable.Dispose对象’<> g__initLocal’.

我也试过使用try-finally块甚至调用dialog.Dispose没有任何块,一切都无济于事 – 警告仍然存在,总是在初始化的行.

解决方法

警告不是因为没有处理FolderBrowserDialog,而是因为它有一些实现IDisposable接口的公共成员而你没有单独处理它们.当然,FolderBrowserDialog对象知道如何处理它的依赖关系,但FxCop无法知道它,因此它会发出警告.只需忽略您案例中的警告即可.

猜你在找的C#相关文章