即使在正确处理组件上的dispose之后,我也面临FxCop
对本地组件变量的警告。代码如下:
public partial class Form2 : Form
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
public Form2()
{
InitializeComponent();
components = new System.ComponentModel.Container();
}
private void Form2_Load(object sender, EventArgs e)
{
DataGridViewTextBoxColumn colm = null;
try
{
colm = new DataGridViewTextBoxColumn();
colm.HeaderText = @"Header text";
dataGridView1.Columns.Add(colm);
}
finally
{
if (colm != null)
components.Add(colm);
}
}
}
这里我将代码中的新组件DataGridViewTextBoxColumn
添加到DataGridView
中。警告是我需要在代码中处理新创建的colm
,但已经添加到表单的容器支持中,它将在表单的dispose上处理所有组件。
FxCop
警告是:
CA2000在丢失范围之前处置对象在方法“Form2.Form2_Load(object,EventArgs)”中,对象“colm”未沿所有异常路径放置。在对对象'colm'的所有引用超出范围之前调用System.IDisposable.Dispose。 WindowsFormsApplication1 Form2.cs 36
针对此类情况的任何修复?