黑马程序员技术交流社区
标题: FrmClass窗体使用单例 [打印本页]
作者: 王国文 时间: 2012-7-29 21:34
标题: FrmClass窗体使用单例
问题:frm.dispose==true 但是 frm !=null 是为什么了????
private static FrmClass frm;
public static FrmClass GetInstance()
{
if (frm == null)
frm = new FrmClass();
return frm;
}
//FormClosing事件处理程序
private void FrmClass_FormClosing(object sender, FormClosingEventArgs e)
{
//frm = null;
//这里如果不释放frm的话, 当关闭窗体再次调用时有时候会出现"无法访问已释放的对象"错误提示, 然而有时不会出现
//具体的感觉是MDI环境下调用的话容易出现这个错误, 这是为什么?
}
或者
public static FrmClass GetInstance()
{
if (frm == null || frm.IsDisposed )
frm = new FrmClass();
return frm;
}
作者: 蔡尚猛 时间: 2012-7-29 21:49
当关闭窗体的时候,窗体已经不存在了,这个时候对象已经不存在了,因为是static 的,所以当你再次打开的时候以对象还在,所以就冲突了
作者: 许庭洲 时间: 2012-7-30 08:32
1,释放并不等于对象为空;
2,当程序执行frm.dispose==true后,系统不会自动把变量中的值清空;
3,若要清空frm ,需要自己置空。
作者: 郭正续 时间: 2012-7-30 08:47
static修饰的话,说明是静态的,这样的话在关闭窗口的话,下次打开会有冲突的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |