文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++从小处看C#.net垃圾回收
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
·TCP/IP网络重复型服务器通信软件的设计
·DirectX游戏开发入门
·经典与现代的结合:在MFC中集成RAD .NET框架
·Windows API-GDI入门基础知识详解(2)
·Visual C++ 入门精解
·C#基础概念二十五问
·用C#实现pdf文件的完整性验证
·成为嵌入式程序员应知道的0x10个问题
·TCP/IP编程实现远程文件传输
·几个C#编程的小技巧
热点TOP10
·socket编程原理
·C#程序开发中的常用函数汇总
·C#基础概念二十五问
·Visual C++ 入门精解
·asp.net中调用javascript函数实现多功能日期控件示例
·《C语言程序设计》教学的几点体会
·简易的四则运算
·学生成绩管理系统实习
·C# GridView 排序及分页
·C#中ArrayList.CopyTo()运行错误的解决方法
·C++ builder 的文件读写操作总结
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·TCP/IP编程实现远程文件传输
·C++设计模式之Singleton
·C宏--智者的利刃,愚者的恶梦
·实现真正意义上的二维动态数组模板
·Delphi中用FastReport制作报表
·VC++下用MSComm控件实现串口通讯
·Beej的网络socket编程指南
·C宏——智者的利刃,愚者的恶梦!

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

日期:2006年12月19日 作者: 查看:[大字体 中字体 小字体]


如果不用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;

}

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

[1] [2] 下一页 




上一篇:在MySQL数据库增加新用户权限简介

下一篇:如何在IE右键菜单中添加菜单项以及如何添加IE任务栏按钮

从小处看C#.net垃圾回收 相关文章:
·清理系统垃圾!让你的Vista跑得更快
·怎样清除硬盘及系统垃圾文件?
·清除电脑里所有垃圾系统文件
·保护隐私 强大的QQ垃圾清理软件
·垃圾邮件泛滥 细数反垃圾邮件技术发展
·不看不知道 Vista回收站暗藏的大秘密
·完整清除XP垃圾文件的秘密武器
·“短信猫”按“午夜凶铃”违法户猛造垃圾广告
·将注册表垃圾清除出门--CleanReg
·[五行]谈谈五系优劣和加点~没有所谓的垃圾系
从小处看C#.net垃圾回收 相关软件:
·电脑垃圾清理专家V7.35 专业版
·全能助手垃圾清理专家 V1.2
·电脑垃圾清理工V3.0
·《物品回收站》疯狂动作模拟游戏试玩
·长春垃圾
·垃圾人
·留学与垃圾
·C语言垃圾代码清除工具
·使用Imail8防止垃圾邮件
·这简直就是:垃圾!

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot