代码之家  ›  专栏  ›  技术社区  ›  Tom Wright

进程类是否可以用于确定进程是否已在运行?

  •  0
  • Tom Wright  · 技术社区  · 15 年前

    我正在使用 Process Class 启动进程,但不希望运行任何程序的多个实例。

    查看文档时,可能会看到很多属性,但没有什么是最明显的。

    确定进程是否正在运行的最佳方法是什么?

    编辑: JohnFisher是对的:它是一个我正在启动的现有应用程序,我无法修改它。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Gabriel McAdams    15 年前

    你可以调用这个方法

    Process.GetProcesses()
    

    并循环遍历结果(类型进程的集合)以查看名称是否匹配。像这样:

    foreach (Process prc in Process.GetProcesses())
    {
        if (prc.ProcessName.Contains(MyProcessName))
        {
            //Process is running
        }
    }
    
        2
  •  1
  •   John Fisher    15 年前

    我想这一切都取决于你所说的“最佳方式”是什么意思?你的意思是最快,最准确,还是会处理一些奇怪的情况?

    我开始的方法是列出进程并对照我试图启动的进程检查可执行文件名。如果匹配(不区分大小写),它可能正在运行。

        3
  •  0
  •   Shay Erlichmen    15 年前

    您应该使用singleton应用程序模式:

    bool createdNew = true;
    using (var mutex = new Mutex(true, "YourProcessName", out createdNew))
    {
        if (createdNew)
        {
            // Run application
        }
    }