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