Le deuxième appel ouvrira l'événement, il ne changera pas l'état de l'événement. Je sais cela parce que la documentation dit qu'elle l'ouvre mais pas qu'elle le réinitialise. Si elle le réinitialisait, ce serait assez important pour le mentionner.
HANDLE responseWaitEvent = CreateEvent(NULL, // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent")); // event name
assert(responseWaitEvent && "Could not create event");
responseWaitEvent = CreateEvent(NULL, // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent")); // event name
assert(responseWaitEvent && "Could not open event");
DWORD dw = WaitForSingleObjectEx(responseWaitEvent, 10000, FALSE);
assert(dw != WAIT_TIMEOUT);
Et le contraire:
HANDLE responseWaitEvent2 = CreateEvent(NULL, // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not create event");
responseWaitEvent2 = CreateEvent(NULL, // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not open event");
DWORD dw2 = WaitForSingleObjectEx(responseWaitEvent2, 10000, FALSE);
assert(dw2 == WAIT_TIMEOUT);
Et l'attente va quitter immédiatement parce que l'événement a déjà été signalé, correct? – Mike
@Mike: Yup dans l'exemple 1 ci-dessus, il reviendra instantanément, dans l'exemple 2, il attendra 10 secondes puis reviendra. –