Мое приложение должно вести себя несколько иначе, когда оно загружается, если уже запущен экземпляр.Обнаружение, если другой экземпляр приложения уже запущен
Я понимаю, как использовать мьютексы для предотвращения загрузки дополнительных экземпляров, но это не совсем решает мою проблему.
Например:
- Instance 1 грузы, получает семафор.
- Экземпляры экземпляра 2, не могут получить мьютексы, знают, что есть еще один экземпляр. Все идет нормально.
- Экземпляры 1 закрываются, отпускаются мьютексы.
- Экземпляры 3 загружаются, получают мьютекс, не знают, что экземпляр 2 все еще работает.
Любые идеи? К счастью, ему не нужно иметь дело с несколькими учетными записями пользователей или что-то в этом роде.
(C#, настольное приложение)
Edit: Для того, чтобы уточнить, приложение не нужно ограничиваться одним экземпляром, просто выполнить несколько иной запуска действия, если есть другой экземпляр уже запущен. Несколько экземпляров прекрасны (и ожидаются).
в упомянутом вами сценарии, что вам нужно? должен ли экземпляр 3 делать то, что делал 1, а экземпляр 2 продолжает вести себя как раньше? (предполагая, что вы не хотите, чтобы один экземпляр был единственным, поскольку это разрешено мьютексом. Экземпляр 2 все равно выйдет) –
В этом случае экземпляр 1 ведет себя в одну сторону, экземпляры 2 и 3 должны использовать альтернативное поведение. Если есть уже запущенный экземпляр, независимо от того, когда он был запущен или что произошло, новый экземпляр будет вести себя незначительно - хотя и не подчёркнуто - иначе. Разница заключается только в одноразовом действии при загрузке. – Andy