C# ShowDialog()后,无法Dispose()释放

RegistRegistwin=newRegist();Registwin.StartPosition=FormStartPosition.CenterScreen;//... Regist Registwin = new Regist();
Registwin.StartPosition = FormStartPosition.CenterScreen;
// try
// {
// Registwin.ShowDialog();
// }
// finally
// {
// Registwin.Dispose();
// }
加上注释内容后,窗口弹出,内存上涨500KB,去掉注释内存不增长,该段代码存在于按钮事件函数中,求解该如何解决这个内存泄露问题?Regist窗体代码中单步未发现泄露。
展开
 我来答
网上冲浪玩家
2013-11-01 · TA获得超过574个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:342万
展开全部
用Using作用域
using(Regist Registwin = new Regist())
{
....
}
内存泄漏是因为不需要再次调用的资源,却没有释放掉.
如果你这个窗体每点一次按钮就要弹出一次,那你这样写是不严谨的
当你这个窗体弹出一次关掉后还会被使用到的话,不应该重新new一个实例出来,对象每被new一次都会分配一个堆内存,对于重复使用的对象设置一个作用范围大的范围.
祎正谊25
2013-11-01 · TA获得超过156个赞
知道小有建树答主
回答量:430
采纳率:75%
帮助的人:213万
展开全部
这里面没有内存泄露的问题吧?new只是实例化一个对象,而后你调用了对象的方法,肯定需要更多的资源的啊!
追问
问题是Form已经关闭了额。。。。实例化的对象就在Form部分的代码里有,Form关闭资源还占着,再重开窗口内存就又涨了,关闭窗口没释放掉,。。。就这样点一次按钮就涨一次
追答
在关闭窗口的时候,同时释放资源,将窗体的实例化放在点击事件中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式