zoukankan      html  css  js  c++  java
  • 单例模式

    //对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了。

  • 相关阅读:
    请教提高上百万行数据insert速度的“经典”方法
    poj1411
    poj1422
    poj1661
    poj1664
    poj1405
    交往艺术与沟通技巧[推荐]
    不可不听的10个职场故事
    也谈如何“领导”你的领导
    十个让爱情稳固的经典好习惯
  • 原文地址:https://www.cnblogs.com/wangguowen27/p/2614317.html
Copyright © 2011-2022 走看看