winform窗口关闭过程

winingsky 2011-03-31 05:22:48
在winform窗口关闭时,在FormClosed响应函数中,我调用了this.Dispose();
但我发现winform对象仍然不为null,我想问下,winform窗口关闭到底是一个什么样的过程?
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
http://blog.csdn.net/yunhaiC/archive/2009/08/07/4423629.aspx
winForm打开及关闭处理事件一览

对於需要轮流处理 Windows Form 应用程式中每个事件的开发人员来说,事件的引发顺序就十分重要。当某个状况呼叫严密的事件处理,如重新绘制表单的部分时,有必要了解事件在执行阶段时的明确引发顺序。本说明主题提供了有关事件顺序的详细资讯,这些事件是指在应用程式和控制项的存留期 (Lifetime) 几个重要阶段中的事件。如需滑鼠输入事件之顺序的详细资讯,请参阅 Windows Form 中的滑鼠事件。如需 Windows Form 事件的概观,请参阅事件概观 (Windows Form)。如需事件处理常式之构成的详细资讯,请参阅事件处理常式概观 (Windows Form)。

应用程式启动与关闭事件 Form 和 Control 类别会公开一组和应用程式启动与关闭有关的事件。当 Windows Form 应用程式启动时,会以下列顺序引发主要表单的启动事件:
 System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChanged
System.Windows.Forms.Form.Load
System.Windows.Forms.Control.VisibleChanged
System.Windows.Forms.Form.Activated
System.Windows.Forms.Form.Shown

当应用程式关闭时,会以下列顺序引发主要表单的关闭事件:
 System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate

Application 类别的 ApplicationExit 事件会在主要表单的关闭事件之後引发。
changjiangzhibin 2011-03-31
  • 打赏
  • 举报
回复
问GC
pcqpzq 2011-03-31
  • 打赏
  • 举报
回复
Form frm= new Form();
frm.dispose();//释放资源,但frm!=null
frm对象只要在程序中的引用计数不为零,就永远不会为null
如果你试图去判断frm==null的话,除非你明文设置frm=null,否则frm==null
永远是false,因为判断语句就将引用计数加1了,所以frm不会自动销毁

具体.net内存管理机制的内容建议楼主仔细看看资料
ningweidong 2011-03-31
  • 打赏
  • 举报
回复
这是操作系统的事情,你不用关心
wulinshe 2011-03-31
  • 打赏
  • 举报
回复
两个头像很搞笑```
winingsky 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ningweidong 的回复:]
先是FormClosing
然后是FormClosed
不知道你调用dispose干什么
[/Quote]
这个过程我知道,我想知道,这个过程中窗体资源是何时被释放的?
ningweidong 2011-03-31
  • 打赏
  • 举报
回复
先是FormClosing
然后是FormClosed
不知道你调用dispose干什么

110,534

社区成员

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

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

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