自己写了一个升级小工具,在程序结束打算关闭时,竟然奔溃了,最后定位到了
wrHandle =devhandle;
rdHandle = devhandle;
if(wrHandle != INVALID_HANDLE_VALUE){ CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE;}if(rdHandle != INVALID_HANDLE_VALUE){ CloseHandle(rdHandle); rdHandle = INVALID_HANDLE_VALUE; }
因为他们的句柄值相等,所以在关闭时,进行了多次关闭,导致程序奔溃,修改如下:
if (wrHandle == rdHandle) { CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE; rdHandle = INVALID_HANDLE_VALUE; }else{ if(wrHandle != INVALID_HANDLE_VALUE) { CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE; } if(rdHandle != INVALID_HANDLE_VALUE) { CloseHandle(rdHandle); rdHandle = INVALID_HANDLE_VALUE; }
}
然后程序就ok,再也不会在程序关闭时中断于此了。
参考资料:
1.