Belhard.Training.MutexDemo.Program.Main C# (CSharp) Method

Main() private method

private Main ( ) : void
return void
        static void Main()
        {
            //Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
            //Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ru-RU");

            bool createdNew;
            var appMutex = new Mutex(true, "MutexDemo.{2B293B02-D2F5-4CE6-8F61-F103E5AC6F51}", out createdNew);

            try
            {
                if (createdNew)
                {
                    RunNewInstance();
                }
                else
                {
                    ActivateRunningInstance();
                }
            }
            finally
            {
                if (createdNew)
                {
                    appMutex.ReleaseMutex();
                }
            }

            // Вызов GC.KeepAlive гарантирует что переменная appMutex не будет удалена сборщиком мусора
            //  до конца работы функции Main, то есть всего приложения.
            // Досрочное освобождение мьютекса позволит запустить несколько копий приложения т.к. наше приложение
            //  потеряет его монопольное владение
            GC.KeepAlive(appMutex);
        }