Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 如何确定Windows进程ID xxxxx仍在运行?_C# - Fatal编程技术网

C# 如何确定Windows进程ID xxxxx仍在运行?

C# 如何确定Windows进程ID xxxxx仍在运行?,c#,C#,我有一个跟踪Windows进程ID的应用程序,需要知道某个进程ID是否仍在运行。进程xxxxx,它正在运行,对还是错?我在C#中有一种迂回的方法,我对此不满意,即 static long[] Processes() { long[] processes = new long[100000]; ManagementClass m = new ManagementClass("Win32_Process"); foreach (ManagementObje

我有一个跟踪Windows进程ID的应用程序,需要知道某个进程ID是否仍在运行。进程xxxxx,它正在运行,对还是错?我在C#中有一种迂回的方法,我对此不满意,即

static long[] Processes() {
    long[] processes = new long[100000];
    ManagementClass m = new ManagementClass("Win32_Process");
    foreach (ManagementObject mobj in m.GetInstances()) {
       long t = (UInt32)mobj["ProcessId"];
       processes[t] = t;
    }
    return processes;
}
这里的想法是,因为只有100000个可能的进程ID,所以该函数返回100000个long的数组。如果进程id xxxxx正在运行,则进程id[xxxxx]不是零。我每隔一分钟左右刷新一次这个列表。是的,我知道始终存在流程id xxxxx可能是新启动的风险,它将被视为假阳性


当然有更好(更快)的方法吗?

也许可以看看
System.Diagnostics.Process.GetProcessById
和相关的类。你能谈谈为什么不使用linq实时查询吗
if(Process.getprocesss().Any(p=>p.Id==pid))
我对此有很多问题;第一个问题:为什么?你的理由是什么,你想实现什么?但是,第二,为什么要创建一个100K长的数组来“尝试匹配”任何现有进程(一个您已经拥有的列表,因为您正在迭代实例列表)?还有更多的问题