WPF Использовать только один экземпляр приложения
Как разрешить запуск только одного экземпляра приложения WPF?
Спасибо.
Ответы
Ответ 1
http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx
Не требует VB.DLL, как советуют некоторые другие примеры.
Код примера WPF.
Пропускает любые аргументы командной строки cmd в исходный экземпляр.
Ответ 2
Попробуйте следующее: Приложение с одним экземпляром. Ive использовал второй метод, и он отлично работает.
Ответ 3
Я использую этот вспомогательный метод и вызываю его из события application.startup
Public Sub ForceSingleInstanceApplication()
'Get a reference to the current process
Dim MyProc As Process = Process.GetCurrentProcess
'Check how many processes have the same name as the current process
If (Process.GetProcessesByName(MyProc.ProcessName).Length > 1) Then
'If there is more than one, it is already running
MsgBox("Application is already running", MsgBoxStyle.Critical, My.Application.Info.Title) 'Reflection.Assembly.GetCallingAssembly().GetName().Name)
' Terminate this process and give the operating system the specified exit code.
Environment.Exit(-2)
Exit Sub
End If
End Sub
Ответ 4
Посмотрите это решение: Разрешить выполнение только одного экземпляра приложения WPF
Это не только применяет один экземпляр приложения, но также дает фокус вашего текущего приложения, когда запускается дополнительный экземпляр приложения. Мое решение мьютекса для ограничения одного экземпляра фактически отличается от приведенной выше ссылки, но мне понравился элемент "focus" для этого решения.
Ответ 5
Пользователь sobelito
связан этот пост, который имеет следующий update. В нем говорится, что для обновленного ресурса вы должны использовать Windows 7 Taskbar Single Instance, который, если вы посмотрите на источник, позволит вам сделать что вам нужно.
Вы можете использовать проект SingleInstance
С#. Он также содержит образцы для WinForms и WPF.
Обратите внимание, что он также выпущен под лицензией Apache 2.0, в отличие от Post Arik Poznanski в блоге Microsoft, который (IANAL, AFAIK) не является коммерчески доступным.