现在的位置: 首页 > 综合 > 正文

question list

2017年12月28日 ⁄ 综合 ⁄ 共 565字 ⁄ 字号 评论关闭

1. #define WIDTHBYTES(bits) ((((bits)+31)/32)*4)  //why for raster line width(NOv 11,2011)

remain task list:

1)8bit chroma data importing cased the 16bit visual form appeared. (Nov 17,2011)


November 22,2011 

这个异常抛出的本质原因,内核对象引用计数为零时,继续递减不存在的对象。

(在进程中试图终止线程的方法中,导致了CloseHandle()紧密地执行两次,一次是进程中的,一次是线程中的,线程栈中保存的局部用于判断的变量因父进程的关闭端口,已变得无效了,从而抛出异常;)

有三类解决办法:
1)放大两次Close()执行间隔,使线程有较多的时间走完自己的生命周期,从而使它不会去关闭别人已关闭的端口对象。
2)在进程中首先执行Close(),然后,其子线程中的Close.可保证不会去关闭看似正确的对象句柄。
3)确保在有效时间范围内只有一次Close被执行。

从设计的角度上讲,试图终止线程的进程方法中,只进行线程终止操作,不另外关闭端口对象。

这是代码编写上的错误,也是软件架构的错误。

进程与其子线程共用了同一个关闭方法。导致在线程被打断时继续执行,试图关闭已被进程关闭的端口中。

抱歉!评论已关闭.