仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 643|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET教程之从小处看C#.net渣滓接纳

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:47:38 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过java比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。假如不必MDI来完成一个主窗体翻开多个子窗体时,
从一个窗体(主窗体)翻开一个(onlyone)别的一个的窗体(子窗体)的完成
父窗体:MainForm
publicpartialclassMainForm:Form
{
............
privatevoidmenuItem1_Load(objectsender,EventArgse)
{
ChildFormchild1=ChildForm.Create();
child1.show();
child1.Focus();
}

//......
}
子窗体:ChildForm
publicpartialclassChildForm:Form
{
.....
staticChildFormchild;

PublicstaticChildFormCreate()
{
if(child==null)
child=newChildForm();
returnChild;
}
......
}
F5运转后,切实其实完成了下面提到的功效。但是,把子窗体封闭后,想再次翻开该子窗体时,单击菜单项,会呈现非常:ObjectDisposedExceptionwasunhandled.
这是为何呢??
这里触及到C#渣滓接纳的成绩:
渣滓接纳是.NET运转库的一部分。渣滓接纳器办理一切的托管工具,一切必要托管数据的.NET言语(包含C#)都受运转库的渣滓接纳器的制约。渣滓接纳器能够断定运转渣滓接纳的最好工夫,主动举行渣滓接纳。但是渣滓接纳的一个产品是:C#工具没有断定性损坏。以是会呈现工具child已被烧毁,但又不为null,会见时发生ObjectDisposedException非常。
怎样办??
办法:应当完全接纳Child所占的资本。
路子有二:
办法一:
修正子窗体的机关函数
publicChildForm()
{
//.........
this.Disposed+=newSystem.EventHandler(Form_Disposed)
}
然后事务Form_Disposed的处置函数
privatevoidForm_Disposed(objectsender,EventArgse)
{
Child=null;
}
办法二:
重写ChildForm的OnClosed办法
ProtectedvoidOnClosed(EventArgse)
{

base.OnClosed(e);
child=null;
}
固然大概有其他的办法,列位看客有乐趣的话增补一下。别的有叙说不妥的中央,请多多指教,鄙人感激涕零。
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 14:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表