//对FrmClass窗体使用单例
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环境下调用的话容易出现这个错误, 这是为什么?
}
为什么会出现这个错误?
为什么有时候会出现这个错误, 有时候不会?
首先窗体这个类比较特别,关闭窗体。它就设为IsDisposed为true,表示该窗口占用的resource已经释放了。但是这时候系统可能还没有收集。只是标识这个该收集了。至于什么时候收集就是系统决定的了。所以你去判断的时候它不为空,就不会创建新的。但是它已经把所有的资源释放了。所以这套机制就不让你去访问啊。因为它不一定什么时候就被回收了。那就是null了。