35

如何只允许 WPF 应用程序的一个实例运行?

谢谢。

4

5 回答 5

29

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

正如其他一些示例所建议的那样,不需要 VB.DLL。有 WPF 示例代码。将任何 cmd 行参数传递给初始实例。

于 2011-03-30T09:11:23.320 回答
16

Try this: Single instance application. Ive used the second method and it works fine.

于 2009-01-05T22:37:48.733 回答
2

查看此解决方案:仅允许 WPF 应用程序的一个实例执行

这不仅会强制执行应用程序的一个实例,而且还会在运行应用程序的其他实例时为您当前的应用程序提供焦点。我限制一个实例的互斥解决方案实际上与上面的链接不同,但我喜欢这个解决方案的“焦点”元素。

于 2013-08-12T20:31:13.060 回答
2

我使用这个辅助方法并从 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
于 2013-09-20T12:31:06.540 回答
1

用户sobelito链接了此帖子,该帖子具有以下更新。它说的是,对于更新的资源,您应该使用Windows 7 Taskbar Single Instance,如果您查看源代码,您可以做您需要的事情。

您可以使用SingleInstancec# 项目。它还包含 WinForms 和 WPF 的示例。

请注意,它也是在 Apache 2.0 许可下发布的,这与 Arik 在 Microsoft 博客中的 Poznanski 帖子不同,后者 (IANAL, AFAIK) 尚未商业化。

于 2017-03-01T11:38:54.430 回答