首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

想问一下closehandle的有关问题

2013-07-04 
想问一下closehandle的问题HANDLE hand CreateEvent(NULL,TRUE,FALSE,NULL)if (CloseHandle(hand)){Afx

想问一下closehandle的问题


HANDLE hand = CreateEvent(NULL,TRUE,FALSE,NULL);
if (CloseHandle(hand))
{
AfxMessageBox("1");
}

if (CloseHandle(hand))
{
AfxMessageBox("2");
}

if (CloseHandle(hand))
{
AfxMessageBox("3");
}

前面两次成功,第三次失败。为什么可以closehandle两次?第一次closehandle后,应该hand计数递减为0,第二次closehandle就应该失败啊,但结果第二次还是成功,第三次才失败。
[解决办法]



#include <Windows.h>
#include <iostream>

int main()
{

HANDLE hand = CreateEvent(NULL,TRUE,FALSE,NULL);
if (CloseHandle(hand))
{
std::cout<<"1"<<std::endl;
}

if (CloseHandle(hand))
{
std::cout<<"2"<<std::endl;
}

if (CloseHandle(hand))
{
std::cout<<"3"<<std::endl;
}

system("pause");
return 0;
}


只调用一次,表示很正常。
[解决办法]
八成是AfxMessageBox开了个id一样的Handle没来及关...

Handle本身是没计数的,关闭一个Handle会给对应的对象的计数减一。

热点排行