Создаём класс MutEx и запишем в него данный код ниже: using System.Reflection; using System.Runtime.InteropServices; using System.Threading; internal static class MutEx { public static bool InstanceCheck { get { new Mutex(true, ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString(), out bool isNew); return isNew ? true : false; } } } Код using System.Reflection; using System.Runtime.InteropServices; using System.Threading; internal static class MutEx { public static bool InstanceCheck { get { new Mutex(true, ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString(), out bool isNew); return isNew ? true : false; } } } И теперь для проверки нам достаточно сделать так: // Можно сделать на оборот как хотите ( просто уберите знак ! ) if (!MutEx.InstanceCheck) { // Запущена копия? сейчас закроем... File.AppendAllText("AppEx.txt", "Fatal Error on running\r\n"); Environment.Exit(-1); } else { // Ваш код. } Код // Можно сделать на оборот как хотите ( просто уберите знак ! ) if (!MutEx.InstanceCheck) { // Запущена копия? сейчас закроем... File.AppendAllText("AppEx.txt", "Fatal Error on running\r\n"); Environment.Exit(-1); } else { // Ваш код. }
Я конечно что все понимаю, но мне кажется что return isNew ? true : false; Код return isNew ? true : false; это тавтология, и можно было написать просто return isNew; Код return isNew;
Челик походу тупо спастил, тк так писать - себя не уважать. Действительно, почему он не написал так: return isNew; Код return isNew;