程序框架左侧是菜单,右侧显示窗口,点击菜单new对象将Form在右侧panel控件中显示,问题是我点击一次菜单new一次然后在任务管理器中查看内存在增加,点击多次以后程序就断掉,我想问怎么可以释放new对象???还有我程序运行后内存占50M还会慢慢增加怎么进行释放??
------解决方案--------------------
你可以用一个List记录已经打开的窗体,点击时,到List中去找该窗体是否存在,如果存在就直接show,没有在new
------解决方案--------------------
你也可以使用Typeof(Object).FullName 作为key存储 用字典
C# 有GC 你也可以手动回收
------解决方案--------------------
与窗口绑定的事件可能没有释放。
单纯的窗口new一般不会出现这样的问题。
------解决方案--------------------
gc回收时有一个系统调用图。当一个对象的引用还在别的使用里时。是不会被gc回收的。
多用using这个还是比较好的。
------解决方案--------------------
你可以用一个List记录已经打开的窗体,点击时,到List中去找该窗体是否存在,如果存在就直接show,没有在new
List直接new对象Add存放吗?只有Value没有Key那该怎么判断Form是否存在???
你也可以使用Typeof(Object).FullName 作为key存储 用字典
C# 有GC 你也可以手动回收
我有一个功能就是在当前页面能修改其他页面的数据,如果将new对象存放到List中那前台显示数据不能及时的更新掉???
对象是引用类型的,倘若A页面简称FA 、B页面简称FB
FA a=new FA();
FB b=new FB();
dic.add(typeof(FB).FullName,a);
dic.add(typeof(FB).FullName,b);
a.show()
你在A里面写了修改B页面的数据时可以同时更新的,因为你操作还是B窗体,引用类型啊亲
------解决方案--------------------
调用完之后 this.Dispose(); 回收,现在楼主有什么 好想法 ?