虽然之前已讨论过主题,但建议的解决方案似乎不起作用..
我的表单应用程序中有一个按钮单击回调方法,它显示了一个文件夹选择器对话框:
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
块甚至调用dialog.Dispose而没有任何块,一切都无济于事 - 警告仍然存在,总是在初始化线上。
答案 0 :(得分:5)
警告不是因为没有处理FolderBrowserDialog,而是因为它有一些实现IDisposable接口的公共成员而你没有单独处理它们。当然,FolderBrowserDialog对象知道如何处理它的依赖,但FxCop无法知道它,所以它会发出警告。只需忽略您案例中的警告。