Мне сказали реализовать этот мьютекс-подход в уже разработанном WPF-приложении, которое у нас было. Обход проблемы с использованием переопределения OnStart()
, который я обнаружил, был в
App.g.cs
Этот файл находится в
obj\x86\debug\
и содержит функцию main()
, так что вы просто помещаете этот фрагмент кода в свою основную функцию.
bool isOnlyInstance = false;
Mutex m = new Mutex(true, @"WpfSingleInstanceApplication", out isOnlyInstance);
if (!isOnlyInstance)
{
MessageBox.Show("Another Instance of the application is already running.",
"Alert",
MessageBoxButton.OK,
MessageBoxImage.Exclamation);
return;
}
GC.KeepAlive(m);
но для этого вам нужно оставить BUILD ACTION
вашего app.xaml равным ApplicationDefinition
ПРИМЕЧАНИЕ. Возможно, это не лучший способ, так как я новичок. (скажите, пожалуйста, есть ли что-то, что я должен изменить)