社区
C#
帖子详情
C#中如何关闭窗体?从内存中释放资源.
linlingwei
2008-10-05 11:02:10
窗口打开多了,程序占用内存很大,在关闭窗体时用下面的办法:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
this.Dispose();
this.Close();
}
可是发现内存资源并没有释放掉,该怎么做呢?
本人是c#新手,请指教.
...全文
4565
17
打赏
收藏
C#中如何关闭窗体?从内存中释放资源.
窗口打开多了,程序占用内存很大,在关闭窗体时用下面的办法: private void Form1_FormClosed(object sender, FormClosedEventArgs e) { this.Dispose(); this.Close(); } 可是发现内存资源并没有释放掉,该怎么做呢? 本人是c#新手,请指教.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
卡索33
2010-12-27
打赏
举报
回复
学习了,正是我所需要的
upcwangbo
2008-10-08
打赏
举报
回复
Dispose会调用Close方法.
close只是关闭窗口却不释放资源!
Dispose将释放所有占用的资源!
cnming
2008-10-08
打赏
举报
回复
其实你只要调用this.close就可以了,自然会调用Dispose,这是.net的机制
至于内存回收,关键要看你的这个Form有没有调用一些非托管并且会驻留内存的内容。如果没有的话,均会自动释放,至于释放,一般都需要有时间的,并不会由于你关闭了就释放内存
cdc9jfzl
2008-10-08
打赏
举报
回复
C#有自己的析构函数,专门负责清理内存。虽然你可以强制调用GC.Collect() 但是不推荐这样做 其实也没有必要。
不用自己清理内存正是c#比C++优越的地方 :)
析构函数是托管的,由C#自己管理,所以发生时间不能确定。
KiSu214
2008-10-08
打赏
举报
回复
我一直在用Close()关闭窗体....
Dispose()......
没用过~~ 学习了~ 呵呵
zhuton
2008-10-08
打赏
举报
回复
我不会,但是我知道还有一种方法让你看不见form,就是this.hide.
wangyanboq
2008-10-08
打赏
举报
回复
调用
GC.Collect()
wuqiubin
2008-10-07
打赏
举报
回复
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
this.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
}
试试这样
first128
2008-10-06
打赏
举报
回复
学习了
palmax
2008-10-06
打赏
举报
回复
垃圾回收由GC托管,不是每时每刻都会立即回收,除非你调用GC.Collect()强制GC立即进行回收
托管资源在窗体关闭时会自动释放的,其他资源如 GDI 等需要你自己释放
888228
2008-10-06
打赏
举报
回复
做个构析 把 System.GC.Collect(); 放进去 ,这样在每次调用该类结束后强制进行垃圾回收。
所有.net开发的资源皆为托管资源,没有直接对内存操作的功能。
贫僧又回来了
2008-10-06
打赏
举报
回复
Dispose会调用Close方法.
close只是关闭窗口却不释放资源!
Dispose将释放所有占用的资源!
NowtAngell
2008-10-06
打赏
举报
回复
用个傻办法?
..
USING()
{
}
可以不?..
上面说的没错,GC垃圾回收系统是会释放资源 问题不会立刻刷新或释放
warrior
2008-10-05
打赏
举报
回复
这样只会主动释放非受控资源,如GDI资源,但是受控内存还需要等待GC进行回收,并不是调用后就立即释放的。
Eagle_ice
2008-10-05
打赏
举报
回复
连接对象是空的话,就释放了资源,但是它还没关闭吧...
Eagle_ice
2008-10-05
打赏
举报
回复
[Quote=引用 1 楼 ZengHD 的回复:]
this.Close();
this.Dispose();
好像效果是一样的吧
[/Quote]
不一样的吧?
ZengHD
2008-10-05
打赏
举报
回复
this.Close();
this.Dispose();
好像效果是一样的吧
CLR.via.
C#
.(
中
文第3版)(自制详细书签)Part2
21.4 使用终结操作来
释放
本地
资源
21.4.1 使用CriticalFinalizerObject类型确保终结 21.4.2 SafeHandle类型及其派生类型 21.4.3 使用SafeHandle类型与非托管代码进行互操作 21.5 对托管
资源
使用终结操作 21.6 ...
释放
WPF应用程序的
内存
WPF应用程序的
内存
有时会成为性能瓶颈 试了许多方式与API函数 最终用的这种方法
CLR.via.
C#
.(
中
文第3版)(自制详细书签)
21.4 使用终结操作来
释放
本地
资源
21.4.1 使用CriticalFinalizerObject类型确保终结 21.4.2 SafeHandle类型及其派生类型 21.4.3 使用SafeHandle类型与非托管代码进行互操作 21.5 对托管
资源
使用终结操作 21.6 ...
C#
2005动态增删控件的
内存
泄露例子
//2 移除控件之后手动调用Dispose,
释放
资源
是否注释掉这两处代码一共有4种组合,反复执行add,remove操作,
内存
泄露的情况如下表, -----------------表1----------------- //1 //2
内存
泄露? 注释掉 注释掉 否 注释掉...
C#
实现
关闭
子窗口而不
释放
子窗口对象的方法
下面小编就为大家带来一篇
C#
实现
关闭
子窗口而不
释放
子窗口对象的方法 。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章