A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王国文 中级黑马   /  2012-7-29 21:34  /  1249 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题: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;  

}  

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
当关闭窗体的时候,窗体已经不存在了,这个时候对象已经不存在了,因为是static 的,所以当你再次打开的时候以对象还在,所以就冲突了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1,释放并不等于对象为空;
2,当程序执行frm.dispose==true后,系统不会自动把变量中的值清空;
3,若要清空frm ,需要自己置空。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
static修饰的话,说明是静态的,这样的话在关闭窗口的话,下次打开会有冲突的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马