从小处看C#.net垃圾回收

如果不用MDI来实现一个主窗体打开多个子窗体时, 数据挖掘交友

从一个窗体(主窗体)打开一个(only one) 另外一个的窗体(子窗体)的实现

父窗体:MainForm 数据挖掘研究院

public partial class MainForm:Form 数据挖掘交友

{ 数据挖掘交友

    ............ 数据挖掘工具

  数据挖掘实验室

    private void menuItem1_Load(object sender,EventArgs e)    

数据挖掘论坛

     { 数据挖掘研究院

        ChildForm child1=ChildForm.Create(); 数据挖掘工具

        child1.show(); 数据挖掘工具

        child1.Focus(); 数据挖掘交友

     }

  

数据挖掘论坛

    //...... 数据挖掘论坛

} 数据挖掘交友

 

子窗体:ChildForm 数据挖掘交友

  数据挖掘交友

public partial class ChildForm:Form

{ 数据挖掘论坛

     .....

  数据挖掘工具

     static ChildForm child;

数据挖掘研究院

     数据挖掘交友

     Public static ChildForm Create()

      { 数据挖掘实验室

         if(child==null) 数据挖掘论坛

            child=new ChildForm(); 数据挖掘工具

          return Child;

      } 数据挖掘工具

     ...... 数据挖掘研究院

}

 

F5运行后,的确实现了上面提到的功能。然而,把子窗体关闭后,想再次打开该子窗体时,单击菜单项,会出现异常:ObjectDisposedException was unhandled.

  数据挖掘实验室

    这是为什么呢??

数据挖掘研究院

  数据挖掘工具

这里涉及到C#垃圾回收的问题:

  数据挖掘交友

垃圾回收是.NET运行库的一部分。垃圾回收器管理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的垃圾回收器的制约。垃圾回收器可以确定运行垃圾回收的最佳时间,自动进行垃圾回收。然而垃圾回收的一个产物是:C# 对象没有确定性毁坏。所以会出现对象child已被销毁,但又不为null,访问时产生ObjectDisposedException异常。

数据挖掘实验室

 

   怎么办??

数据挖掘实验室

  数据挖掘交友

   方法:应该彻底回收Child所占的资源。

  途径有二: 数据挖掘论坛

方法一:

数据挖掘论坛

修改子窗体的构造函数

public ChildForm() 数据挖掘研究院

{

数据挖掘实验室

      //......... 数据挖掘交友

      this.Disposed+=new System.EventHandler(Form_Disposed) 数据挖掘工具

} 数据挖掘工具

然后事件Form_Disposed的处理函数

数据挖掘研究院

private void Form_Disposed(object sender,EventArgs e) 数据挖掘论坛

{

数据挖掘实验室

      Child=null; 数据挖掘研究院

}

数据挖掘论坛

方法二:

重写ChildForm的OnClosed方法 数据挖掘研究院

Protected void OnClosed(EventArgs e) 数据挖掘实验室

{ 数据挖掘实验室


      base.OnClosed(e); 
      child=null; 数据挖掘工具

}

当然可能有其他的方法,各位看客有兴趣的话补充一下。另外有叙述不当的地方,请多多指教,在下感激不尽。 数据挖掘实验室

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:通过查询结果进行分页
下一篇:C++初学者应该关心的优秀图书一览
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • 挑战C#学习的最快速度
  • C#模仿QQ截图功能
  • C# 关于开机自动运行程序方式之一
  • 第一章 C#简介
  • 利用C#实现分布式数据库查询
  • Visual Studio 2005 Hands-On Tutorial - P
  • C#入门代码
  • .NET架构与模式探索
  • 用C#代码编写的SN快速输入工具
  • C# 关于开机自动运行程序方式之一
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • 彻底剖析C# 2.0泛型类的创建和使用
  • 对C# 2.0中匿名方法的怀疑分析
  • EasySP管理解决方案基于Microsoft .NET架构
  • .NET架构与模式探索
  • .NET架构的核心开发技术
  • 用C#代码编写的SN快速输入工具
  • C#链接数据库技巧
  • C#设计模式编程之抽象工厂模式新解
  • 第一章 C#简介
  • 第七章 异常处理
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静