昨天真是郁闷极了,做了半年的多的项目,应客户的要求加入了新的处理算法,然后调试让系统运行,在debug的模式下一切正常运行,然而后来想做release版本时却出现了System.Reflection.TargetInvocationException,一直在想以前做的软件版本都没有问题,现在仅是加入了一些新的算法幷在控制程序里添加了新功能,却出现了这个郁闷的bug,在客户的工作环境里感到囧死了!
没办法静下心,只有不断地在release模式下打印一些调试信息,不断地添加注释/*...*/语句来缩小错误范围,后面终于发现了原来在界面程序里利用BeginInvoke参数中的delegate函数调用算法处理类的数组成员变量,自己开始是利用指针的方式引用了该成员变量的值方式如下:
int *pRunState = this->ctrl->pRunState;其后delegate的函数中多次调用了pRunState变量;
后来修改为如下的方式:
int pRunState[3];
for (int i= 0; i < 3; i++)
pRunState[i]= this->ctrl->pRunState[i]; 其余代码正常,余下的程序并没有变化!
Oh My God!What's a big suprise !一切正常了!