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

  • 相关阅读:
    Timer 函数 C#
    【学习笔记】 golang的插件 创建share object
    mongodb数组操作
    mongo数据库的表设计原则:二
    mongodb + nginx 存储照片方案
    mongodb聚合操作$使用例子
    mongo配置复制集
    尼采全集
    java日志框架
    常用包收集
  • 原文地址:https://www.cnblogs.com/wangguowen27/p/2614317.html
Copyright © 2011-2022 走看看