在 .NET 中 Process.GetProcessById
如果具有此 ID 的进程未运行,则抛出异常。如何安全地调用此方法,使其不会抛出异常?我在想类似的事情
if(Process.IsRunning(id)) return Process.GetProcessById(id);
else return null; //or do something else
但找不到任何检查 ID 的方法,除了可能获取所有正在运行的进程并检查该 ID 是否存在于列表中。
最佳答案
public Process GetProcByID(int id)
{
Process[] processlist = Process.GetProcesses();
return processlist.FirstOrDefault(pr => pr.Id == id);
}
我查看了 Process.GetProcessById
方法。
它使用内部静态类 ProcessManager 来确保进程运行。 ProcessManager 获取系统中当前运行的所有进程并检查那里的 ID,因此我认为这是最好的方法。
所以你应该考虑异常的开销或者Process
数组的开销。
关于c# - 如何在调用 Process.GetProcessById 之前检查进程是否仍在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14975755/