Mon application doit se comporter légèrement différemment lorsqu'elle se charge si une instance est déjà en cours d'exécution.Détection si une autre instance de l'application est déjà en cours d'exécution
Je comprends comment utiliser un mutex pour empêcher le chargement d'instances supplémentaires, mais cela ne résout pas tout à fait mon problème.
Par exemple:
- instance 1 charges, obtient le mutex.
- L'instance 2 charge, ne peut pas obtenir le mutex, sait qu'il y a une autre instance. Jusqu'ici tout va bien.
- L'instance 1 se ferme, libère le mutex.
- Instance 3 charge, obtient le mutex, ne sait pas que l'instance 2 est toujours en cours d'exécution.
Des idées? Heureusement, il n'a pas besoin de gérer plusieurs comptes d'utilisateurs ou quelque chose comme ça.
(C#, application de bureau)
Edit: Pour clarifier, l'application n'a pas besoin d'être limité à une seule instance, il suffit de lancer une action de démarrage légèrement différent s'il y a une autre instance déjà en cours d'exécution. Plusieurs instances sont correctes (et attendues).
dans le scénario que vous avez mentionné, quel est le comportement souhaité? Est-ce que l'instance 3 devrait faire ce que l'instance 1 faisait et l'instance 2 continuer à se comporter comme avant? (en supposant que vous ne voulez pas vous assurer d'une instance unique, puisque cela est résolu par le mutex, l'instance 2 finira par sortir quand même) –
Dans ce scénario, l'instance 1 se comporte d'une manière, les instances 2 et 3 doivent utiliser le comportement alternatif. Si une instance est déjà en cours d'exécution, indépendamment du moment où elle a démarré ou de ce qui s'est passé depuis, une nouvelle instance se comportera légèrement, mais de manière non significative, différemment. La différence est seulement une action unique sur le chargement. – Andy