请教C#的Form窗体Close后,是否需要显式执行Dispose()方法?

jxyihui 2009-08-19 04:38:29
请问Form窗体Close后,是否需要显式执行Dispose()方法,否则无法释放资源?
当采用Show()方法时,如何释放资源?

w_Form1 wForm1 = new w_Form1();
wForm1.Owner = this;
if (wForm1.ShowDialog() == DialogResult.OK)
{
this.tadLB.Fill(this.dsZL.LB);// 填充数据
}
wForm1.Close();
wForm1.Dispose();


w_Form1 wForm1 = new w_Form1();
wForm1.Owner = this;
wForm1.Show();
//wForm1.Close();
//wForm1.Dispose();
...全文
1215 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈哈地图 2012-09-26
  • 打赏
  • 举报
回复
这个说的最好
我也越到过Close之后,再show。还是会保留以前信息的情况
[Quote=引用 16 楼 的回复:]

msdn:-----Form.Close()

在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
[/Quote]
chenchen871105 2010-11-19
  • 打赏
  • 举报
回复
msdn:-----Form.Close()

在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。

jxyihui 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpu_2 的回复:]
我们就用了,在FormClosing事件里再调用  odentity.Dispose();方法。
[/Quote]
请问odentity是什么?
cjnet 2009-08-19
  • 打赏
  • 举报
回复
托管資源一般都不需要調用Dispose()方法,而非托管資源,如Com接口,資源句柄等需要自己釋放
jxyihui 2009-08-19
  • 打赏
  • 举报
回复
我也知道.NET有垃圾回收机制。但我发现,采用ShowDialog()时,关闭窗口后,如果没有执行:
wForm1.Close(); wForm1.Dispose();
这2行时,内存中还存在wForm1窗口,因为我关闭wForm1窗口的父窗口时,居然还提示我保存wForm1窗口内的数据,wForm1窗口和它的父窗口中的数据是独立无关连的。
让我捏了一把汗。
zhengqian529 2009-08-19
  • 打赏
  • 举报
回复
GC 自己处理
xingjunli 2009-08-19
  • 打赏
  • 举报
回复
不用了,剩下的交给CLR吧
CPU_2 2009-08-19
  • 打赏
  • 举报
回复
我们就用了,在FormClosing事件里再调用 odentity.Dispose();方法。
zhangguofang1129 2009-08-19
  • 打赏
  • 举报
回复
不执行了,可以写代码试一下
this.Close();
this.Dispose();
if (1==1)
{
MessageBox.Show("dd");
}
robin521 2009-08-19
  • 打赏
  • 举报
回复
如果不放心就直接using
robin521 2009-08-19
  • 打赏
  • 举报
回复
.NET本身有垃圾回收机制!
NealXX 2009-08-19
  • 打赏
  • 举报
回复
可以显式的调用Dispose()方法 这样可以释放托管资源
如果不调用则垃圾收集器调用析构函数 只能是否非释放托管资源
风之影子 2009-08-19
  • 打赏
  • 举报
回复
C#自动在关闭窗体对象后回收.



一般都是在数据库或是处理图片时调用.
wdzr_826 2009-08-19
  • 打赏
  • 举报
回复
不需要。Net会自动回收
butterdog 2009-08-19
  • 打赏
  • 举报
回复
正常情况下,程序自行回收
lunasea0_0 2009-08-19
  • 打赏
  • 举报
回复
不需要,反编译看看吧,Close调用Dispose()
qlzf11140820 2009-08-19
  • 打赏
  • 举报
回复
多此一举吧,Close()了,资源CLR会管理的

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧