自己写了一个升级小工具,在程序结束打算关闭时,竟然奔溃了,最后定位到了
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.