如何只允许一个WPF应用程序实例运行?
感谢。
答案 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),并非商业化。