如何在调用Process.GetProcessById之前检查进程是否仍在运行?

Lou*_*hys 7 .net c# system.diagnostics

在.NET中Process.GetProcessById,如果没有运行具有此ID的进程,则抛出异常.如何安全地调用此方法,以便它不会抛出异常?我在想类似的东西

if(Process.IsRunning(id)) return Process.GetProcessById(id);
else return null; //or do something else
Run Code Online (Sandbox Code Playgroud)

但是找不到任何检查ID的方法,除了可能获取所有正在运行的进程并检查列表中是否存在id.

Dmi*_*oly 13

public Process GetProcByID(int id)
{
    Process[] processlist = Process.GetProcesses();
    return processlist.FirstOrDefault(pr => pr.Id == id);
}
Run Code Online (Sandbox Code Playgroud)

我看着里面的Process.GetProcessById方法.

它使用内部静态类ProcessManager来确保该进程运行.ProcessManager获取当前在系统中运行的所有进程并检查其中的id,因此我认为这是最好的方法.

所以你应该考虑异常的开销或Process数组的开销.