今天调试程序,发现一个问题,我无法理解,设置的窗口在通讯设置正确后,开始进行通信,而且定了一个Timer,每隔一段时间,加通信的任务。程序以前出现过这样的问题,但是我没注意,现在发现,只要程序在大量下载数据之后,通信突然停掉,看不到硬件上的发送和接收,我这边是主,所以应该是我这边没有发了,所以才没有回答的数据,但是程序还在运行中。端口断开,应该是有提示的啊,为什么什么都没有呢?现在都没有发送了。
I know,回来再说。
回来了,为什么会这样,因为我的执行程序根本没有调用,或者说,因为机缘巧合或者说是必然。
程序的执行时这样的:初始化执行任务,调用执行(加了一把锁,一次一个),执行完反馈并检查是否还有需要执行的任务,若有,再调用执行。
上述是一个过程,而其中的问题在于,程序是有不断的往里面加任务或者根据用户需要添加任务。通信停止的原因在于,某一时刻,执行任务的列表为空,当然就没有执行了,而我后来添加的执行任务,没有调用执行,只是一味的添加,so,造成了这后果。
逻辑不缜密啊,该打该打。。。
但是问题其实并不是像我想的那样,上述是一个问题,但其跟本问题是,我的锁机制,一次一个,maybe任务太多等我不知道的原因,导致,任务在里面没执行完就死了,造成死锁,其他任务进不去,无法继续执行。
可执行的任务不执行,其他任务也无法进入,造成通信死掉。
调试时发现,原来进入了,catch语句里的异常里,所以无论我重启通信端口还是重置任务列表,还是捕捉到死锁后,(愚昧的)解锁程序都通信不起来,只能重新跑。
不知道,不知道,哪里出了问题,还是程序本身,抓狂
程序越来越不行了,以前是被要折腾的要死要活才出问题,现在变得稀松平常了。感觉自己越做越慢了