C# Process类是否可用于确定某个流程是否已在运行?

C# Process类是否可用于确定某个流程是否已在运行?,c#,process,C#,Process,我正在使用启动进程,但不希望任何程序运行的实例超过一个 查看文档,有很多看起来很像的属性,但没有最明显的 确定进程是否正在运行的最佳方法是什么 编辑:John Fisher是对的:我正在启动的是一个现有的应用程序,我无法修改它。对此,您应该使用单例应用程序模式: bool createdNew = true; using (var mutex = new Mutex(true, "YourProcessName", out createdNew)) { if (createdNew)

我正在使用启动进程,但不希望任何程序运行的实例超过一个

查看文档,有很多看起来很像的属性,但没有最明显的

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


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

对此,您应该使用单例应用程序模式:

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

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


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

您可以调用此方法

Process.GetProcesses()
并循环遍历结果(类型Process的集合),以查看名称是否匹配。大概是这样的:

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

这只有在他尝试启动一个他编写并可以修改的应用程序时才会起作用。