it-swarm.com.ru

WPF Enforce только ОДИН экземпляр приложения

Как разрешить запуск только одного экземпляра приложения WPF?

Благодарю.

32
John Batdorf

http://blogs.Microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx

Не требует VB.DLL, как советуют некоторые другие примеры . Имеет пример кода WPF . Передает любые аргументы строки cmd в начальный экземпляр.

29
sobelito

Попробуйте это: Приложение одного экземпляра . Я использовал второй метод, и он отлично работает.

15
Artur Carvalho

Я использую этот вспомогательный метод и вызываю его из события 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
2
VoteCoffee

Пользователь sobelito связан это сообщение, которое имеет следующее обновление . Это говорит о том, что для обновленного ресурса вы должны использовать Windows 7 Task Bar Single Instance , который, если вы посмотрите на источник, позволит вам делать то, что вам нужно.

Вы можете использовать проект SingleInstance c #. Он также содержит образцы для WinForms и WPF.

Обратите внимание, что он также выпущен под лицензией Apache 2.0, в отличие от поста Арика Познанского в блоге Microsoft, который (IANAL, AFAIK) недоступен в продаже. 

0
Sergio Basurco

Проверьте это решение: разрешить выполнение только одного экземпляра приложения WPF

Это не только обеспечивает выполнение одного экземпляра приложения, но также дает фокусировку на текущем приложении при запуске дополнительного экземпляра приложения. Мое мьютексное решение для ограничения одного экземпляра на самом деле отличается от приведенной выше ссылки, но мне понравился элемент "focus" в этом решении.

0
jsirr13