之前开了一个贴子,可能我没描述清楚,所以问题仍没有解决
目前项目一开始运行还比较正常,但是随着运行时间长了,整个系统运行就会越来越慢,主要体现
在窗体界面显示上面,窗体上的控件就像一个一个显示出来的一样,不像VB等那样显示的很干脆。
项目中操作人员操作比较频繁,之间会弹出几个窗体,也用到了一些静态类,也调用了第三方接口
现在感觉无从下手,不知道该怎么去找到问题的所在,所以请教大家,希望大家给点建议
目前项目一开始运行还比较正常,但是随着运行时间长了,整个系统运行就会越来越慢,主要体现
在窗体界面显示上面,窗体上的控件就像一个一个显示出来的一样,不像VB等那样显示的很干脆。
项目中操作人员操作比较频繁,之间会弹出几个窗体,也用到了一些静态类,也调用了第三方接口
现在感觉无从下手,不知道该怎么去找到问题的所在,所以请教大家,希望大家给点建议
NET不是自动回收内存资源的吗,怎么不回收的呢?
检查代码看不出什么问题,要是能看出什么异常就不会来向大家咨询了
另外我个人的刚刚得到的经验是,不要去触碰析构函数,对于有Dispose方法的对象,自己new出来时,能using就using,要么就把这东西扔到一个上级的组件集合中,让组件集合处理对它的销毁问题,如果你对象的生命周期把析构函数也做为它控制其他对象生命的一部分的话,那么就悲衰了.
这是我昨天刚得到的经验,因为我思考过SP1234先生的一段话,并试验过.本人语文不太好,可能说不清楚意思.反正就一个原则吧,如果你new出来,你就应该知道它什么时候被销毁,不要指望Application.Exit后.
比如说 有这样一个静态类public static class CBSpeech
{
public static bool Init(string EmpName, string HospName)
{
...
return true;
}
}
程序可能多次调用CBSpeech.Init("","");这样的话内存什么时候回收呢
因为有构造函数的存在,对于我们自己定义的类,我们可以知道这个类的构造函数又干了些什么,对于第三方的类,你不可能知道他干了点什么.对于.Net自己提供的类,没研究过的话也不知道.昨天有个玩贴,耍人贴,他在一个for中创建自己的对象,只new,它的new中new一个新的Form,又Show了,他可能不懂,也可能是耍人玩的,因为Form在Show后会被加入的Application.OpenForms中的,也就是说这个Form肯定是不会因为在for中创建的对象失去最后一个引用而消失的.这种就是陷井.你的软件中有类似这种陷井吗?另外,我在给你的第一个回复中已经说了:"建议找专家现场弄吧,一般合格的产品不会出现这种问题."建议,不要自己找原因了,因为你自己对资源的回收都有疑问.
反正程序结束前肯定回收
因为对于重要资源的回收还有上层.和Win98不一样,如果有Win98中某个程序有资源没回收(特别是GDI资源,不过98还是宽松了许多,如果是Win3.1,你还得通知你的上下级程序,系统会通过WinMain把上级传给你),马上所有的窗口都会黑,嘿嘿....
Net这种大公司的东西加上越来越高的操作系统版本,对于程序员犯的这种低级错误不可能没防范,不过大公司也不可能考虑那么周到,还是自律吧..Net的垃圾回收,不是让你肆无忌惮的用
我从事开发不是很长,jointan所说的一时还不能完全理解。
自己再慢慢摸索吧
bs
主要看下IO操作部分