Je voudrais savoir si les évènements sont thread-safe ? C'est une question qui me trotte dans la tete depuis un petit moment.
Merci
Version imprimable
Je voudrais savoir si les évènements sont thread-safe ? C'est une question qui me trotte dans la tete depuis un petit moment.
Merci
Oula, c'est un peu vague comme question... :roll:
Tout ce qu'il y a à savoir, c'est que le déclenchement d'un évènement n'est rien de plus qu'un appel de méthode... les handlers s'exécutent donc généralement sur le thread qui déclenche l'évènement, sauf dans certains cas particuliers. Par exemple, le BackgroundWorker appelle les handlers des évènements ProgressChanged et RunWorkerCompleted sur le thread de l'interface graphique, et non sur le thread de travail, de façon à ce qu'on puisse modifier l'interface dans les handlers de ces évènements.
Donc , si j'ai un event qui ce nomme TOTO et que j'ai 3 threads qui le déclenche bah c pas thread-safe ? donc faut que je mette un vérrou sur l'abonné ?
ce que je veux dire c disont que j'ai un event
et que j'ai trois trois threads qui lance l'évènement AddFile, il faut donc que dans la fonction abonnée je mette une vérrou quelque chose du genre :Code:
1
2
3 public delegate void AddFileinfoEventHandler(object sender, AddFileinfo e); public event AddFileinfoEventHandler AddFile;
Code:
1
2
3
4
5
6
7
8 void _fonctionabonnée(...) { lock(objetverrou) { .... } }
??