У меня есть объект события auto- reset, созданный следующим образом:
handle = CreateEvent(NULL, true, false, NULL);
... и (для некоторых целей тестирования), я хочу проверить, сигнализировалось ли оно в определенный момент. Я знаю о "правильном" способе использования событий - это чисто для диагностического жгута.
Для ручного события reset я могу просто использовать...
bool signalled = WaitForSingleObjectEx(handle, 0, true) != WAIT_TIMEOUT;
... но для событий auto- reset, которые имеют побочный эффект их сброса. Думаю, я мог бы попробовать это, но у меня есть ощущение, что должен быть менее опасный путь...?
bool isSignalled(HANDLE handle)
{
bool signalled = WaitForSingleObjectEx(handle, 0, true) != WAIT_TIMEOUT;
// warning - event is now reset. Maybe need to wrap this in a critical section or similar?
if (signalled)
SetEvent(handle);
return signalled;
}