Thread et attente

Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007
-
Bonjour,

Voilà mon problème. J'ai un thread que je veux mettre en
attente d'un événement AutoResetEvent. Pendant cette attente, je voudrais qu'il envoi l'éxécution d'une fonction. Pour le
moment avec MyAutoResetEvent.WaitOne(); le thread se met en attente
mais ne fais rien. J'avais dans l'idée donc de débord vérifier l'état
de AutoResetEvent, puis si il est à false éxécuter ma fonction et ensuite mettre le thread en attente.
J'aimerais donc savoir si il est possible de vérifier si une instance de AutoResetEvent est à l'atat true ou false ? Je ne trouve pas de propriété qui fasse celà. En existe t-il ?

Mathmax

3 réponses

Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

Bonjour,

Si tu souhaites effectuer une opération dans un thread, en attendant un signal, tu peux effectivement utiliser WaitOne.
Mais avec un délai d'attente de ce signal.
Ex :
do
{
      //fonction de traitement
}while (!myAuroResetEvent.WaitOne(1000, false));

Dans cet exemple, le thread appelle ta fonction de traitement puis attend un signal pendant une seconde.
Si oui, le thread s'arrête, sinon il appelle à nouveau la fonction...

-- AOGie --
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Le problème c'est que si l'AutoResetEvent est à l'état true, je ne veux pas que la fonction soit appelée (Dans ton exemple, elle est forcément appelée au début). Si par contre l'AutoResetEvent est à l'état false, je voudrais que la fonction soit appelée pendant l'attente (WaitOne) mais seulement une seule fois (Dans ton exemple, elle est rappelée toutes les secondes).
Est-il possible de faire celà ?

Mathmax
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

Tu voudrais un mécanisme proche de l'Idle : si d'autres thread sont à l'oeuvre, je ne fais rien sinon j'effectue ma tâche de fond... As-tu jeté un coup d'oeil du côté de l'objet Monitor ? Tu peux tenter d'entrer dans une section critique et décider d'effectuer telle ou telle chose... A voir.

-- AOGie --