Часто возникает необходимость ограничить приложение возможностью запуска только одного экземпляра. Сделать это можно несколькими способами, разной степени красивости и эффективности. Мне же, больше нравится вариант с использованием мьютекса. Для этого нужно в самое начало процедуры Main добавить несколько строчек:
bool newMutexCreated = false; myMutex = new Mutex(false, "MyAppTestMutex", out newMutexCreated); if (!newMutexCreated) { Console.WriteLine("Только один экземпляр приложения может быть запущен!"); Console.ReadLine(); Environment.Exit(1); }
Ну а если уж делать все совсем красиво и правильно, то имя мьютекса должно быть уникально. Достичь этого можно использовав следующую конструкцию:
string mutexName = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();
К сожалению, цена подобной красоты - необходимость добавления двух дополнительных сборок: System.Reflection и System.Runtime.InteropServices;
Комментариев нет:
Отправить комментарий