UDF > WinAPIEx > Processes & Synchronization > Synchronization >


_WinAPI_ResetEvent

D�finit l'objet d'�v�nement sp�cifi� � l'�tat non signal�

#include <WinAPIProc.au3>
_WinAPI_ResetEvent ( $hEvent )

Param�tre

$hEvent Handle de l'objet d'�v�nement. La fonction _WinAPI_CreateEvent() retourne ce handle.

Valeur de retour

Succ�s: Retourne True.
�chec: Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations suppl�mentaires sur l'erreur.

Remarques

L'�tat d'un objet �v�nement reste non signal� jusqu'� ce qu'il soit explicitement d�finie � signal� par la fonction _WinAPI_SetEvent(). Cet �tat non signal� bloque l'ex�cution des threads qui ont sp�cifi� l'objet d'�v�nement en appelant une des fonctions _WinAPI_Wait....

La fonction _WinAPI_ResetEvent() est utilis�e principalement pour les objets d'�v�nement de r�initialisation manuelle, qui doivent �tre d�finies explicitement � l'�tat non signal�.
Les objets d'�v�nement de r�initialisation automatique changent automatiquement de signal� � non signal� apr�s qu'un seul thread en attente soit lib�r�.

En relation

_WinAPI_CreateEvent, _WinAPI_SetEvent

Voir aussi

Consultez ResetEvent dans la librairie MSDN.

Example

#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>

Global $g_tEvents = DllStructCreate("handle Event[3];")
$g_tEvents.Event(1) = _WinAPI_CreateEvent(0, True, False)
$g_tEvents.Event(2) = _WinAPI_CreateEvent(0, True, False)
$g_tEvents.Event(3) = _WinAPI_CreateEvent(0, True, False)

HotKeySet("{ESC}", "_Exit")
AdlibRegister("_FireEvent_1", 500)
AdlibRegister("_FireEvent_2", 800)

Local $iEvent
Do
    $iEvent = _WinAPI_WaitForMultipleObjects(3, $g_tEvents, False, 100)
    Switch $iEvent
        Case 0
            ConsoleWrite("+ First Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(1))
        Case 1
            ConsoleWrite("> Second Event" & @CRLF)
            _WinAPI_ResetEvent($g_tEvents.Event(2))
    EndSwitch
Until $iEvent = 2 Or $iEvent = -1 ;Erreur

If $iEvent = 2 Then 
    ConsoleWrite("! Exit Event" & @CRLF)
    AdlibUnRegister("_FireEvent_1")
    AdlibUnRegister("_FireEvent_2")
    _WinAPI_CloseHandle($g_tEvents.Event(1))
    _WinAPI_CloseHandle($g_tEvents.Event(2))
    _WinAPI_CloseHandle($g_tEvents.Event(3))
EndIf

Func _Exit()
    _WinAPI_SetEvent($g_tEvents.Event(3))
EndFunc   ;==>_Exit

Func _FireEvent_1()
    _WinAPI_SetEvent($g_tEvents.Event(1))
EndFunc   ;==>_FireEvent_1

Func _FireEvent_2()
    _WinAPI_SetEvent($g_tEvents.Event(2))
EndFunc   ;==>_FireEvent_2