Как разрешить запуск только одного экземпляра приложения WPF?
Спасибо.
Как разрешить запуск только одного экземпляра приложения WPF?
Спасибо.
http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx
Не требует VB.DLL, как советуют некоторые другие примеры. Код примера WPF. Пропускает любые аргументы командной строки cmd в исходный экземпляр.
Попробуйте следующее: Приложение с одним экземпляром. Ive использовал второй метод, и он отлично работает.
Я использую этот вспомогательный метод и вызываю его из события 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
Посмотрите это решение: Разрешить выполнение только одного экземпляра приложения WPF
Это не только применяет один экземпляр приложения, но также дает фокус вашего текущего приложения, когда запускается дополнительный экземпляр приложения. Мое решение мьютекса для ограничения одного экземпляра фактически отличается от приведенной выше ссылки, но мне понравился элемент "focus" для этого решения.
Пользователь sobelito
связан этот пост, который имеет следующий update. В нем говорится, что для обновленного ресурса вы должны использовать Windows 7 Taskbar Single Instance, который, если вы посмотрите на источник, позволит вам сделать что вам нужно.
Вы можете использовать проект SingleInstance
С#. Он также содержит образцы для WinForms и WPF.
Обратите внимание, что он также выпущен под лицензией Apache 2.0, в отличие от Post Arik Poznanski в блоге Microsoft, который (IANAL, AFAIK) не является коммерчески доступным.