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);
}