1 votes

Comment créer un mutex au niveau de la classe, qui fonctionne dans tous les processus ?

J'ai une classe qui enregistre dans un fichier. Cette classe est utilisée par plusieurs threads. J'ai utilisé un mutex dans la fonction d'écriture et cela fonctionne bien avec une instance de mon application. Mais si je lance plusieurs instances de l'application, elle se bloque.

Quelle est l'implémentation correcte d'un mutex nommé au niveau de la classe qui peut fonctionner à travers le processus ?

3voto

grega g Points 869

Utiliser un Mutex nommé. Fonctionne pour la synchronisation interprocessus.

Mutex mut = new Mutex(false, "Global\\uniquename");

Voir cet article pour les meilleures pratiques d'utilisation de Mutex : http://stackoverflow.com/questions/229565/what-is-a-good-pattern-for-using-a-global-mutex-in-c

0voto

Vilx- Points 37939

Pour la journalisation, je suggère d'ouvrir (avec un locK exclusif) et de fermer le fichier pour chaque écriture. Le verrou s'occupera de la synchronisation. Vous pouvez essayer System.IO.File.AppendAllText() J'ai le sentiment que c'est exactement ce qu'il fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X