WPF Enforce только ОДИН экземпляр приложения - PullRequest
33 голосов
/ 06 января 2009

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

Спасибо.

Ответы [ 5 ]

29 голосов
/ 30 марта 2011

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

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

15 голосов
/ 06 января 2009

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

2 голосов
/ 20 сентября 2013

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

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

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

0 голосов
/ 01 марта 2017

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...