Приветствую всех! Сегодня рассмотрим один пример из того множества как можно запретить использовать более одной копии своего приложения. Для этого воспользуемся примитивом Mutex, для межпроцессорной синхронизации. На первый взгляд все кажется сложным, и не понятным, но сейчас увидите как все просто.
1 2 3 4 5 6 7 8 9 10 |
static Mutex mutex = new Mutex(false,"MyProg"); static void Main(string[] args) { mutex.WaitOne(); Console.WriteLine("Защита"); Console.WriteLine("Нажмите клавишу для продолжения"); Console.ReadKey(); mutex.ReleaseMutex(); } |
У нас происходит инициализация нового экземпляра класса System.Threading.Mutex логическим значением, указывающим, должен ли вызывающий поток быть изначальным владельцем мьютекса, а также иметь строку, являющуюся именем мьютекса.
Параметры:
initiallyOwned: Значение true для предоставления вызывающему потоку изначального владения именованным системным мьютексом, если этот мьютекс создан данным вызовом; в противном случае- значение false, именно он у нас и установлен.
name:
Имя System.Threading.Mutex. Если значение равно null, у объекта System.Threading.Mutex нет имени, в нашем случаии MyProg. Стоит давать уникальные имена с id программой, иначе может возникнуть коллизии.
Как видите ничего сложного, всего 3 строчки кода 🙂