WaitForSingleObject
イベントが通知されたとしても、タイムアウトを待つことがあるようです。
シグナリングスレッドは、SetEvent()
毎回成功を受け取ります。ただし、シグナルが送信されているスレッドは、常にシグナルを聞くとは限りません。SetEvent()
シグナリングスレッドに冗長性を追加すると、問題は解決します。
明らかに、ここで何かがおかしい。考えられる原因は何ですか?
// Signalling Thread
if (SetEvent(waitEvent))
consoleprintf(L"\r\nEvent Set.");
そして、遅延時間待つか、信号を受け取る必要があります。しかし、常に合図されるわけではありません。
waitEvent = CreateEvent(
NULL, // default security attributes
FALSE, // auto-reset event
FALSE, // initial state is nonsignaled
TEXT("WaitEvent") // object name
);
for(;;)
{
dwWaitResult = WaitForSingleObject(waitEvent, // event handle
5000);
switch (dwWaitResult)
{
// Event object was signaled
case WAIT_OBJECT_0:
consoleprintf(L"\r\nSuccess.");
break;
case WAIT_FAILED:
//break;
case WAIT_ABANDONED:
consoleprintf(L"\r\nWait failed.");
break;
case WAIT_TIMEOUT:
consoleprintf(L"\r\nWait Timed out: %d", waitTime);
break;
default:
break;
}
}