重启应用程序并检查是否已在运行

时间:2016-09-26 10:00:34

标签: wpf vb.net

在我的应用程序中,我为重新启动我的程序编写了这个子目录。 这段代码没问题。

Sub Restart
     'For restart application many times
     Application.Current.Shutdown()
     System.Diagnostics.Process.Start(Application.ResourceAssembly.Location)
End Sub

几天后,我添加了此代码以检查程序是否已在运行。 (这段代码还可以)

Sub IsRunning
   'Check if it's already running
   If (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) Then
         Msg = "Application is running"
         MessageBox.Show(Msg, "Attention", MessageBoxButton.OK, MessageBoxImage.Error)
         Application.Current.Shutdown()
  End If
End Sub

现在,问题是什么?如果我尝试重新启动应用程序,我会收到消息“应用程序正在运行”,我不能这样做!

如何解决这个问题?

非常感谢

1 个答案:

答案 0 :(得分:1)

在应用程序开始时,注册一个全局互斥锁。 当应用程序关闭时,释放互斥锁。

然后,您可以通过检查是否可以获取互斥锁来检查您的应用程序是否已在运行。

这可能会带来一些启发:Run single instance of an application using Mutex

此MSDN链接:https://msdn.microsoft.com/en-us/library/system.threading.mutex(v=vs.110).aspx

希望有所帮助