-
probleme de thread
Bonjour à tous.
je vous écrit car j'ai un probléme de evenment et donc implicitement de thread. Je m'explique :
J'utilise un module qui déclenche un evenment lorsque l'utilisateur fait un mouseDown. Le probleme est que je dois faire patienter ce thread jusqu'à l'arrivé d'une autre action de l'utilisateur qui decidera de l'action à faire (celle-ci intervient au max à 400 ms aprés).
Le probléme c'est que je ne peut pas faire attendre ce thread par un timer car la classe Timer est multi-threadé (cela implique que l'evenment en cours se termine, pour laisser la place a un autre evenment. Or je ne peut pas terminer la méthode en cours).
Un sleep ne peut pas marcher car il bloque le thread mais aussi tous le programme.
Un monitor ou un mutex ne marche pas car comme tous sont des evenment utilisateur, cela implique que ce sont tous des thread different. Or avec un monitor ou un mutex on peut prendre une ressource pour la bloquer, mais on ne peut la libéré que par le meme thread (et donc par le evenment)
Derniere chose, il n'est bien evidement pas possible d'heriter de ce module pour surchargé les methodes invoqué lors du déclenchement d'un evenment : c'est un activeX importer dans dotnet via aximp, il n'est pas conforme au CLR.
Donc, si quelqu'un a une idée je suis prenneur.
merci à tous (au moins d'avoir pris le temps de lire le message jusqu'aux bout. ;) )
-
Salut,
Je ne sais pas si j'ai tout saisi, mais idée (peut-être complètement pas bonne du tout :lol: )
- déclencher un timer sur le mousedown qui check tous les "x" si l'utilisateur a réalisé l'action attendue. Lorsque l'action arrive, gérer alors ce qu'il faut faire (dans le code du tick).
-
(lu en diagonale)
les timers de windows.forms ne sont pas vraiment multithreadés
ceux de system.timers le sont un peu plus
sinon regarde vers system.threading.manualresetevent je crois
tu declare une variable privée de ce type
dans un thread tu fais .waitone
et dans l'autre tu fais .reset et là ca débloque celui qui attendait sur la ligne .waitone