UDF > WinAPIEx > Processes & Synchronization > Synchronization >


_WinAPI_SetEvent

Définit l'objet d'événement spécifié à l'état signalé

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

Paramètre

$hEvent Handle de l'objet événement

Valeur de retour

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

Remarque

L'état d'un objet d'événement de réinitialisation manuelle reste signalé jusqu'à ce qu'il soit explicitement défini à l'état non signalé par la fonction de ResetEvent. N'importe quel nombre de threads en attente, ou de threads qui commencent des opérations d'attente pour l'objet d'événement spécifié en appelant l'une des fonctions d'attente, peut être libérée lorsque l'état de l'objet est signalé.

Voir aussi

Consultez SetEvent dans la librairie MSDN.

Exemple

#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