C# wpf закрытие второго экземпляра приложения

Nechto

Здравствуйте!Подскажите пожалуйста, как можно правильно закрыть второй запущенный экземпляр приложения и перевести фокус на первый экземпляр приложения?
class App : Application
{
 public static Mutex InstanceCheckMutex;

 protected override void OnStartup(StartupEventArgs args)
 {
 base.OnStartup(args);

 bool isNew;
 InstanceCheckMutex = new Mutex(true, "MyApplication", out isNew);
 if (!isNew)
 {
 MessageBox.Show(@"Приложение уже открыто");
 return;
 }
 }
}
1 ответ

Nechto

В данном случае нужно использовать не мьютекс, а EventWaitHandle.Судя по
protected override void OnStartup(StartupEventArgs args)
приложение на WPF. Велосипед для такого случая (и с использованием EventWaitHandle) уже изобретен: http://blogs.microsoft.co.il/maxim/2010/02/13/single-instance-application-manager/Для активации окна первого приложения в коллбеке проверки инстанса выполнить с синхронизацией на диспетчере UI-потока
Application.Current.MainWindow.Show();
Application.Current.MainWindow.ACtivate();