【问题标题】:WPF Enforce only ONE instance of applicationWPF 仅强制一个应用程序实例
【发布时间】:2010-09-29 16:51:22
【问题描述】:

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

谢谢。

【问题讨论】:

标签: wpf runtime instance


【解决方案1】:

试试这个:Single instance application。我用了第二种方法,效果很好。

【讨论】:

  • 第二种方法是我找到的最好的方法。只需克服它使用 Microsoft.VisualBasic DLL 的事实,它会完成您需要的一切 - 包括正确使用 .NET 远程处理(无需自己创建套接字或互斥锁)。但最重要的是,它可以轻松地将参数传递给已经运行的应用程序,或者在您尝试重新打开它时将其置于最前面
  • 链接断开 - 请更新
  • @rayzinnz 应该不错
【解决方案2】:

用户sobelito 链接this 帖子,其中包含以下update。它的意思是,对于更新的资源,您应该使用Windows 7 Taskbar Single Instance,如果您查看源代码,您可以做您需要的事情。

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

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

【讨论】:

    【解决方案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】:

      查看此解决方案:Allowing only one instance of a WPF application to execute

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 我真的很喜欢这种方法,如果用户再次尝试运行程序,它可以让您执行诸如激活最小化窗口之类的操作。
        • 这是一个非商业的微软博客license。该资源已在 msdn 中以不同的许可证发布。请参阅我在此线程上的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        相关资源
        最近更新 更多