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

时间:2010-10-12 16:00:51

标签: c# process

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

查看文档,有很多可能看起来很好的属性,但没有什么比最明显的更突出。

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

编辑: John Fisher是对的:这是我正在启动的现有应用程序,我无法对其进行修改。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以调用此方法

Process.GetProcesses()

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

foreach (Process prc in Process.GetProcesses())
{
    if (prc.ProcessName.Contains(MyProcessName))
    {
        //Process is running
    }
}

答案 2 :(得分:0)

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

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