c#winform 程序 子窗体关闭时, 如何释放窗体所占用的内存。急 c# winform 程序 子窗体关闭时, 如何释放窗体所占用的内存。form.close();后,内存,并没有释放啊。一个程序,随着窗体的一直打开,关闭,内存占用量很大啊 急 如何解决啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 form.dispose();也不行,试过了 谢谢你的回复。 你可以试一下使用这样的函数 public void Dispose() { /*对窗体控件进行 *.close(); 操作 GC.SuppressFinalize(this); } 这函数运行于你的Form2关闭的时候, 作用是要Form2不进入垃圾回收! 直接释放其空间! 希望能帮到你! GC.SuppressFinalize(this)也不会马上回收,但会在近期回收 GC.SuppressFinalize(this); 请求系统不要调用指定对象的终结器。然后我又调用了 GC.ReRegisterForFinalize(this); 请求系统调用指定对象的终结器,此前已为该对象调用 SuppressFinalize在 form关闭事件里 写的 还是不能是否该窗体所占用的内存。后来,我又把 GC.SuppressFinalize(this); 放到窗体初始化里面在窗体关闭时 调用 GC.ReRegisterForFinalize(this); 还是不能释放 内存,但我发现 在程序最小化时,可以是否内存。不知道 程序是调用什么东西释放的内存。还是 很谢谢你的回答。 override dispose 以上答案 都不能解决我偶的问题但 还是谢谢 各位了 。分少 请不要介意。我给出我偶的方法。希望对 人 有点启发 [DllImport("kernel32.dll")] private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); private static void FlushMemory() { GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1); //System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5); } 我已经找到解决办法了!子窗体关闭,自动会释放进程所占用的内存资源,而且只要在主窗体加入 private void MainForm_MdiChildActivate(object sender, EventArgs e)事件即可! 我已经找到解决办法了!子窗体关闭,自动会释放进程所占用的内存资源,而且只要在主窗体加入MainForm_MdiChildActivate(object sender, EventArgs e)事件即可!需要的朋友加QQ群:70790810 如何监控一个程序是否死掉? 关于导出到excel的问题!! C#能不能做个监控IE访问网址的程序 C#中WinForm界面的设计可以用什么模式能实现界面的灵活性 微软atlas 有人了解StyledForms.GoogleTalkForm 这个东西吗?? 装vs.net2003时碰到的问题 用了AJAX技术的页面也没用的页面从外观上看有区别吗? 那里买域名便宜一点,可以转域名 DataGrid模板列的问题 VS2005安装和部署 新手用SharpDevelop出现的问题???
也不行,试过了
谢谢你的回复。
public void Dispose()
{
/*对窗体控件进行 *.close(); 操作
GC.SuppressFinalize(this);
}
这函数运行于你的Form2关闭的时候, 作用是要Form2不进入垃圾回收! 直接释放其空间!
希望能帮到你!
GC.ReRegisterForFinalize(this); 请求系统调用指定对象的终结器,此前已为该对象调用 SuppressFinalize在 form关闭事件里 写的 还是不能是否该窗体所占用的内存。后来,我又把 GC.SuppressFinalize(this); 放到窗体初始化里面
在窗体关闭时 调用 GC.ReRegisterForFinalize(this); 还是不能释放 内存,但我发现 在程序最小化时,可以是否内存。
不知道 程序是调用什么东西释放的内存。还是 很谢谢你的回答。
但 还是谢谢 各位了 。
分少 请不要介意。
我给出我偶的方法。希望对 人 有点启发
[DllImport("kernel32.dll")]
private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
private static void FlushMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
//System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5);
}
而且只要在主窗体加入MainForm_MdiChildActivate(object sender, EventArgs e)事件即可!
需要的朋友加QQ群:70790810