Sta*_*ent 29 .net c# diagnostics pid
我想找到一种方法来遍历所有活动进程并对它们进行诊断检查(内存使用情况,CPU时间等),类似于任务管理器.
问题分为两部分:
我甚至不确定要在哪个命名空间中查看它.任何帮助/提示/链接都很感激.
Jar*_*Par 74
查找所有流程
您可以通过Process类完成此操作
using System.Diagnostics;
...
var allProcesses = Process.GetProcesses();
Run Code Online (Sandbox Code Playgroud)
运行诊断程序
你能在这里给我们更多的信息吗?目前尚不清楚你想做什么.
Process类提供了一些信息,虽然这可能会帮助你.可以查询此类
编辑
OP提到他们想获得内存和CPU信息.这些属性在Process类上很容易获得(由GetProcesses()返回).下面是列出所有支持的属性的MSDN页面.有各种内存和CPU可供选择,以满足您的需求.
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
码:
将此行添加到您的使用列表:
using System.Diagnostics;
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用Process.GetProcesses()方法获取进程列表,如下例所示:
Process[] processlist = Process.GetProcesses();
foreach (Process theprocess in processlist)
{
Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}
Run Code Online (Sandbox Code Playgroud)
JaredPar 已经指出了Process该类,所以我将补充一点,您应该知道,在创建实例时,该类会获取进程信息的快照。这不是实时视图。要更新它,您必须调用Refresh()实例。
还请记住,该进程可能会在您检查时关闭,因此请准备好捕获异常并相应地处理它们。
最后,如果你打电话,Process.GetProcesses()你也会得到伪进程“空闲”和“系统”。IIRC 它们具有特定的进程 ID,因此您可以轻松地将它们过滤掉。
实际上找到所有流程非常简单:
using System.Diagnostics;
Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
{
// Get whatever attribute for process.
}
Run Code Online (Sandbox Code Playgroud)