ca2000在失去范围之前处置对象
在方法中FormMain.barButtonItem1_ItemClick(object, ItemClickEventArgs)
call system.idisposable.dispose在对象" frm"上的dispose在所有引用不范围之前。winpro formmain.cs 32
方法:
private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
{
FormCustomerList frm = new FormCustomerList();
frm.MdiParent = this;
frm.Show();
}
这不是一个严重的问题,但是为什么要解雇?
我最终无法使用frm.Dispose()
或using()
,因为将不会显示表格。
我还试图处理闭合形式然后处置,但违规始终在这里。
代码分析无法确定frm
在退出范围后仍在执行任何操作。在这种特定情况下,该对象在功能完成后需要保持生命。
处理此操作的"正确"方法是在父级中维护对frm
的引用。然后可以将此参考处置在父级的Dispose()
方法中。
private FormCustomerList frm;
private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
{
frm = new FormCustomerList();
frm.MdiParent = this;
frm.Show();
}
如果您有多个可以创建的子表格(如果您使用MDI可能是可能的),则可以维护儿童表格的List<>
。
private List<FormCustomerList> frms = new List<FormCustomerList>();
private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
{
FormCustomerList frm = new FormCustomerList();
frms.Add(frm);
frm.MdiParent = this;
frm.Show();
}