Thread et attente

cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 16 sept. 2006 à 17:20
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007 - 17 sept. 2006 à 13:00
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

aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
17 sept. 2006 à 10:56
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 --
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
17 sept. 2006 à 11:58
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
0
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
17 sept. 2006 à 13:00
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 --
0
Rejoignez-nous