C# 如何确定Windows进程ID xxxxx仍在运行?
我有一个跟踪Windows进程ID的应用程序,需要知道某个进程ID是否仍在运行。进程xxxxx,它正在运行,对还是错?我在C#中有一种迂回的方法,我对此不满意,即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
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长的数组来“尝试匹配”任何现有进程(一个您已经拥有的列表,因为您正在迭代实例列表)?还有更多的问题