我有一个创建命名事件的过程,使用::CreateEvent
.
在我的过程中,我想检查事件是否存在,但我不想创建事件以防它不存在。
我该怎么做?
我可以这样做,但是如果事件不存在,则会创建该事件:
HANDLE hEvent;
hEvent= ::CreateEvent(NULL, FALSE, FALSE, _T("MyEvent"));
if (::GetLastError() != ERROR_ALREADY_EXISTS)
{
.......
}
我有一个创建命名事件的过程,使用::CreateEvent
.
在我的过程中,我想检查事件是否存在,但我不想创建事件以防它不存在。
我该怎么做?
我可以这样做,但是如果事件不存在,则会创建该事件:
HANDLE hEvent;
hEvent= ::CreateEvent(NULL, FALSE, FALSE, _T("MyEvent"));
if (::GetLastError() != ERROR_ALREADY_EXISTS)
{
.......
}
OpenEvent
如果事件尚不存在,则不会创建该事件,因此您的代码几乎已经完成了您想要的操作。NULL
在检查错误代码之前,您需要检查事件句柄:
HANDLE hEvent;
hEvent= ::OpenEvent(FALSE, FALSE, _T("MyEvent"));
if (!hEvent) // event does not already exist, or other problem
{
.......
}
CString csHandleName = "hEvent";
int nHandleinc(0);
HANDLE hHandleEvent = NULL;
while(!hHandleEvent)
{
csHandleName.Format("hEvent%d",nHandleinc);
hHandleEvent = CreateEvent(NULL,TRUE,false,csHandleName);
if (GetLastError() == ERROR_ALREADY_EXISTS )
{
CloseHandle( hHandleEvent );
hHandleEvent = NULL;
}
nHandleinc++;
}