我有一个手动重新发送,总是发出信号。当我告诉它时它不会重置(并且它在CreateEvent中作为手动重置事件正确创建)。通常设置事件的代码是一个尚未启动的可执行文件。
while (1) {
lStatus = GetObjStatus(m_pObj);
if (lStatus == ST_UP)
DoStuff();
DWORD wait = WaitForSingleObject(handle, 5000);
if (wait == WAIT_OBJECT_0) {
DWORD d = ResetEvent(handle);
FTRACE("MainLoop() Wakeup signaled %d", d);
}
}
即使事件被重置但从未设置,此代码也会非常快速地生成数百万条跟踪。