日期:2014-05-18  浏览次数:21417 次

.Net WinForm系统运行越来越慢
之前开了一个贴子,可能我没描述清楚,所以问题仍没有解决
 目前项目一开始运行还比较正常,但是随着运行时间长了,整个系统运行就会越来越慢,主要体现
在窗体界面显示上面,窗体上的控件就像一个一个显示出来的一样,不像VB等那样显示的很干脆。 
 项目中操作人员操作比较频繁,之间会弹出几个窗体,也用到了一些静态类,也调用了第三方接口
现在感觉无从下手,不知道该怎么去找到问题的所在,所以请教大家,希望大家给点建议

------解决方案--------------------
没看代码也不好说原因。手动回收一下内存资源试试。
------解决方案--------------------
对于已经非常熟悉.Net的人,太复杂的类,加上过于面向过程的编程思想(路),自己对于回收机制应该还是持怀疑态度的,所以我本人还是非常愿意研究的探讨对象的生存状态的,所以有许多人探讨生命周期的问题.

如果不是太明白,反正我是不太明白,所以应该尽量使对象的生命周期放在自己可操控的泛围内,尽量不要去触碰雷区

我过去一直守一个原则,"反正我也不清楚,结果不可预料,那么就不让它发生"

PS:
另外我个人的刚刚得到的经验是,不要去触碰析构函数,对于有Dispose方法的对象,自己new出来时,能using就using,要么就把这东西扔到一个上级的组件集合中,让组件集合处理对它的销毁问题,如果你对象的生命周期把析构函数也做为它控制其他对象生命的一部分的话,那么就悲衰了.


这是我昨天刚得到的经验,因为我思考过SP1234先生的一段话,并试验过.

本人语文不太好,可能说不清楚意思.反正就一个原则吧,如果你new出来,你就应该知道它什么时候被销毁,不要指望Application.Exit后.

------解决方案--------------------
探讨
程序可能多次调用CBSpeech.Init("","");这样的话内存什么时候回收呢

------解决方案--------------------
感觉垃圾回收有点鸡肋,好多时间都会发生内存溢出之类的事情,原因不清楚
------解决方案--------------------
需要自己控制资源,特别是Form对象,用完了一定要释放,不要等GC,这个不靠谱,不知道要等到什么时候。
------解决方案--------------------
在VS开个性能分析,然后操作操作,然后分析下看性能耗费在哪了
主要看下IO操作部分