一个简单的关闭窗口问题,高手请进

[复制链接]
查看11 | 回复7 | 2021-1-27 05:57:25 | 显示全部楼层 |阅读模式
我的程序第一次窗口是一个登陆窗。
密码正确后,就关闭,再打开主窗。
关闭用Me.Close()
要不要在Me.Close()之前加一个Me.Finalize()

例如:
Me.Finalize()
Me.Close()
要不要先释放登陆窗体的资源,再来关闭,还是直接关闭?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
不懂具体怎么才能释放干净

登陆界面可能还好,之前我的程序有个数据查询界面,查出来一堆数据之后占不少内存呢,关闭时不管是disposefinalize还是gc.collect,SetProcessWorkingSetSize(GetCurrentProcess(),-1&,-1&),总是清不干净内存
明明最小化就能减少一大堆内存的


回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
Finalize只释放非托管资源;
Dispose释放托管和非托管资源;
先释放再关闭当然最好。
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
不需要,为了能更有说服力,转一句msdn的原话:
此方法重写Finalize。应用程序代码不应该调用此方法;在垃圾回收期间将自动调用对象的Finalize方法,除非垃圾回收器的终止功能已通过调用SuppressFinalize方法被禁用。
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
窗体关闭后,关闭在该对象内创建的所有资源并且释放该窗体。通过处理Closing事件,并设置作为参数传递给事件处理程序的CancelEventArgs的Cancel属性,可以防止在运行时关闭窗体。如果要关闭的窗体是应用程序的启动窗体,则该应用程序结束。
Close时不释放窗体的一种情况是,窗体属于多文档界面(MDI)应用程序的一部分且是不可见的。在这种情况下,您需要手动调用Dispose,将窗体的所有控件都标记为进行垃圾回收。
来自msdn
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
用用environment.exit(0)试试
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
Me.Close()'关闭窗体自身
Me.Dispose()'释放资源
回复

使用道具 举报

千问 | 2021-1-27 05:57:25 | 显示全部楼层
其实吧,释放不是又怎么样呢
刚开始学习,还是不要钻牛角尖就好
否则郁闷了,就没有动力了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行