【发布时间】:2014-10-24 09:59:42
【问题描述】:
我有一堆正在运行的 C# 程序的 Windows 进程 ID (PID),我需要知道进程名称(例如 chrome)以显示信息。
我目前使用这种方法:
string processName;
using(var process = Process.GetProcessById(pid))
{
processName = process.ProcessName; // THIS is costly
}
事实证明,它是我的诊断中最慢的功能之一,也是最占用内存的功能之一(根据 Visual Studio 性能和诊断)。例如,70 次调用需要 12.8 MB 内存。这是我的应用所需总内存的一半。
从 C# 获取进程名称(或有用的进程描述)的替代(和更快)方法是什么?
注意:代码应该在没有管理员权限的情况下运行
【问题讨论】:
-
您需要对 GetProcessById() 返回的进程对象调用 Dispose()。尝试添加对 Dispose() 的调用并再次对其进行基准测试。
-
我已经是了。更新了我的问题以显示它;
.ProcessName很贵。 -
关于否决票:这个问题怎么不清楚或没有用?请告诉我要添加/更改的内容。
标签: c# .net performance memory process