1. 不必要的循环
2. 在不必要的循环中生成不必要的对象
在循环中如有需要判断跳出循环的条件,尽量写到开头。生成N个对象耗了内存之后再判断,则为时晚矣。
在循环中如果需要查询数据库获得信息,返回类型尽量不要使用大对象如DataSet,DataTable等。如果返回的是单行的数据可以考虑使用一维数组,如果返回的是少数几个字段,可以使用ref,out这种方式。
3. 滥用全局变量
4. 冗余的数据来源集合
尽可能只抓用到的数据,不要select *。同一个程式尽量重用集合,而不是每个操作或者循环中抓一次。
5. 未及时释放连接,对象
连接用完则close。不重用的集合用完则clear。每隔一段时间可以强制垃圾回收gc.collect。
6. 过度重绘窗体
这也是个要命的动作。成百上千甚至更多的数据,如果一次绘制一条到grid,则微型设备会晕倒。比如扫条码,操作员并不会每扫一条就去grid中看一下的。所以也不必要每扫一个条码就重绘Grid。等全部扫完,再一次性show出来,就会快很多。
7. 一次性显示全部数据
这个的解决办法可以参考web程式的分页显示了。查询完数据库,获得数据集合。第一次只show出前N条即可。
8. 过度的事件监听
虽然windows ce程式提供了lostfocus,getfocus,txtchanged等事件。为了那点少得可怜的内存,建议能不能就尽量不要用。