今天去了一趟现场,程序本身还是有些问题的,主要是执行了过多的循环,有些边界条件没有控制,因此,往复对数据库的读写次数太多了,这样在发生一个事件的事件方法中需要很长时间,可以达到14秒之久。
这时出现一个有趣的现象,就是通信功能紊乱了,事件不断触发,事实上不应该触发的,我怀疑是Socket的缓冲区满了,或者溢出了?现象是事件一触发-〉长时间计算(10余秒钟)-〉得到计算结果-〉立即引发第二个事件;如此反复,程序基本上没有实用价值。
上述的现象我无法解释。在计算过程中到底会有多少的错误我也不知道,System.Data中的错误会对Socket的通信造成多大的影响?我也不知道。总之优选计算的部分我觉得有些乱,摸不清楚。
经过下午的努力(查找)结果找到在AccZc这个方法中大循环之行的时候没有作判断,实际上如果做了判断,循环计算的次数会大量减少。这样优选程序基本上会在1秒钟左右执行完毕。这时对Socket的通信也没有影响了。
另外一个现象:如果测量长度、测量宽度是一个不合理的值,比如都是0,这是引发的事件也会反复,这个现象也没有办法解释。这是程序执行不稳定的2个因素,下一步需要找到原因和解决办法。
还好,程序现在的速度可以了,需要精简、美化和打包了。
上述问题考虑和程序的优化放在一起完成。
早上再打电话到他公司才知道小培出差去了哪里,我说怎么联系不上呢……