WPF仅强制执行一个应用程序实例

时间:2009-01-05 21:50:04

标签: wpf runtime instance

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

感谢。

5 个答案:

答案 0 :(得分:29)

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

不像其他一些示例那样需要VB.DLL。 有WPF示例代码。 将任何cmd行args传递给初始实例。

答案 1 :(得分:15)

试试这个:Single instance application。我已经使用了第二种方法,它工作正常。

答案 2 :(得分: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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

用户grep关联this帖子,其中包含以下update。它说的是,对于更新的资源,您应该使用Windows 7 Taskbar Single Instance,如果您查看源代码,您将可以执行所需的操作。

您可以使用sobelito c#项目。它还包含WinForms和WPF的样本。

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