【问题标题】:.NET Check if another application is running.NET 检查是否有另一个应用程序正在运行
【发布时间】:2009-05-11 13:51:07
【问题描述】:

我有一个应用程序,它为一系列其他应用程序提供核心服务。

当这些应用程序中的另一个启动时,我想检查服务应用程序是否正在运行,如果没有关闭。

检查其他应用是否存在的最佳方法是什么?我在想我应该在服务应用程序中使用全局互斥锁并检查它在其他应用程序中是否存在。这是正确的方法吗?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    全局互斥锁方法很好,很多应用都在使用。

    例如,Windows Media Player 就是这样做的。

    相关问题:

    Is using a Mutex to prevent multiple instances of the same program from running safe?

    【讨论】:

      【解决方案2】:
      bool IsApplicationAlreadyRunning()
      {
      string proc=Process.GetCurrentProcess().ProcessName;
      Process[] processes=Process.GetProcessesByName(proc);
      if (processes.Length > 1)
      return true;
      else
      return false;
      }
      

      来源:http://kseesharp.blogspot.com/2008/11/c-check-if-application-is-already.html

      【讨论】:

      • 互斥锁是一种更好的方法。如果多个进程具有相同的名称,则使用进程名称可能会失败,但这种情况不太可能发生。
      • 这种方法对我有用,但是如果只有应用程序的实例正在运行,那么 if 条件将被更改为 if (processes.length > 0
      【解决方案3】:

      是的 - 请注意您所说的互斥锁。这些有特定的命名准则-this has some details

      【讨论】:

        【解决方案4】:

        我会说查看您用于与服务应用程序通信的方法,并查看通信失败行为是什么。如果您在任何时候尝试与服务应用程序通信并失败,由于高度依赖,您似乎想要有失败行为。如果第一次通信失败,好像要退出应用程序;但是您也必须担心如果您以后的通信失败会发生什么。

        【讨论】:

          【解决方案5】:

          尝试以下(VB.NET 示例):

                  If PrevInstance() Then
                      MsgBox("[MyApplicationName] application is already running.")
                      Exit Sub
                  End If
          
          
          Function PrevInstance() As Boolean
              If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
                  'MsgBox("Application is still running", MsgBoxStyle.Information)
                  Return True
              Else
                  Return False
              End If
          End Function
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-03-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-21
            • 2019-02-16
            相关资源
            最近更新 更多