Часто возникает необходимость ограничить приложение возможностью запуска только одного экземпляра. Сделать это можно несколькими способами, разной степени красивости и эффективности. Мне же, больше нравится вариант с использованием мьютекса. Для этого нужно в самое начало процедуры 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;
Комментариев нет:
Отправить комментарий