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

标签 c# .net system.diagnostics

在 .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/

相关文章:

c# - 使用 DataContractJsonSerializer 反序列化一个简单的 JSON 数组

c# - 如何针对不同环境配置Application Insights?

c - 有没有办法在 Windows/Linux 中用 c 检查故障内存?

c# - 如何使用agora.io Unity SDK获取 channel 用户列表

c# - 防止在窗体标题栏上单击鼠标右键显示系统上下文菜单

C#引用;隐藏成员

.net - 日期格式和客户端-服务器交互

c# - 从 C# 和 .NET 自动启动 java-web-start 应用程序,.WaitForExit();不按预期工作

c# - 为什么 .NET 线程的性能不如单独的 .NET 进程?

c# - .NET 4.0 C# 初始化字符串不符合登录错误