小弟目前负责调试一款C#写的软件,在分析log的时候发现一个匪夷所思的问题。如图1,I_MainForm.Get_Craft()函数被调用,说明Str_Craft的值必然为”NA“。I_MainForm.Get_Craft()函数定义如图2所示,。
按道理,进入I_MainForm.Get_Craft()函数后程序会进入死循环,不断查询数据库状态,直接满足条件才break,同时打印Log。但实际的log如图3所示,,其中UpdateLineStatus()语句必须在I_MainForm.Get_Craft()函数执行之后才能执行。所以分析log只有一种可能,那就是while循环根本没进去。但是从图1可知,while循环是一定会进去的,除非在执行之前Str_Craft的值被修改,但假如修改了,log中应该会有信息。
小弟想破脑袋也想不通这个问题产生的原因,还望各位高手赐教!
ps:这个问题发生的几率很小,但是一旦发生就会很麻烦,所以本人一定要解决它!
按道理,进入I_MainForm.Get_Craft()函数后程序会进入死循环,不断查询数据库状态,直接满足条件才break,同时打印Log。但实际的log如图3所示,,其中UpdateLineStatus()语句必须在I_MainForm.Get_Craft()函数执行之后才能执行。所以分析log只有一种可能,那就是while循环根本没进去。但是从图1可知,while循环是一定会进去的,除非在执行之前Str_Craft的值被修改,但假如修改了,log中应该会有信息。
小弟想破脑袋也想不通这个问题产生的原因,还望各位高手赐教!
ps:这个问题发生的几率很小,但是一旦发生就会很麻烦,所以本人一定要解决它!
解决方案
40
乱加trycatch的结果