Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何唯一地标识流程_C#_Process - Fatal编程技术网

C# 如何唯一地标识流程

C# 如何唯一地标识流程,c#,process,C#,Process,我有一个.net wpf应用程序,其exe名称为TestTool 我想从一个单独的应用程序中掌握这个过程。我过去常常得到 使用进程名称的进程。代码如下: var process = Process.GetProcessesByName("TestTool"); 现在,我担心的是,如果有其他exe以相同的名称运行,那么我可能会 遇到一个我得到错误流程的场景 是否有一种方法可以唯一地标识我的测试工具流程 感谢您的帮助您可以检查文件名: Process.GetProcessesByName("T

我有一个.net wpf应用程序,其exe名称为TestTool

我想从一个单独的应用程序中掌握这个过程。我过去常常得到 使用进程名称的进程。代码如下:

  var process = Process.GetProcessesByName("TestTool");
现在,我担心的是,如果有其他exe以相同的名称运行,那么我可能会 遇到一个我得到错误流程的场景

是否有一种方法可以唯一地标识我的测试工具流程


感谢您的帮助

您可以检查文件名:

Process.GetProcessesByName("TestTool").MainModule.FileName;
或者你可以:

  • 循环冗余校验
  • 检查文件的版本信息
  • 检查同一路径中的额外文件

尝试使用Linq根据进程exe文件位置确定进程是否正在运行,如以下示例所示:

var process = Process.GetProcessesByName("Dns_management");

bool pIsRunning = Process.GetProcessesByName("Dns_Management")
                .FirstOrDefault(p => p.MainModule.FileName.StartsWith(@"F:\VS_2015_WorkSpace\Projects\DNS_Management\DNS_Management\bin\Debug")) 
                != default(Process);

            if (pIsRunning == true)
            {
                foreach (Process p in process)
                {
                    Console.WriteLine(p.ProcessName + " Is Running");
                }
                            }
            else
            {
                Console.WriteLine("The process is not available");
            }