我想通过所有的活动进程,以找到一种方法,循环和他们(内存使用,CPU时间等),有点类似于任务管理器做诊断检查。
这个问题被分解为两个部分:
我不知道,甚至在什么命名空间中去寻找它。任何帮助/技巧/链接感谢。
找到所有的过程
您可以通过过程来实现这个目的
using System.Diagnostics;
...
var allProcesses = Process.GetProcesses();
运行诊断程序
你可以在这里给我们一些更多的信息?目前尚不清楚你想要做什么。
Process类提供了一些信息,虽然可能会帮助你。它可以查询这个类
编辑
OP提到他们想要得到的内存和CPU的信息。这些属性是在Process类(由GetProcesses()返回)容易获得。下面是列出了所有支持的属性的MSDN页面。有可用,将适合您的需求的各种内存和CPU的。
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
码:
该行添加到您的使用列表:
using System.Diagnostics;
现在你可以用Process.GetProcesses()的过程方法,如在这个例子中的列表:
Process[] processlist = Process.GetProcesses();
foreach (Process theprocess in processlist)
{
Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}
找到所有过程是相当容易的实际上是:
using System.Diagnostics;
Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
{
// Get whatever attribute for process.
}
JaredPar已经指出Process
类,所以我就补充一点,你应该知道,那类需要过程的快照创建实例时的信息。这不是一个实时取景。要更新它,你必须调用Refresh()
的实例。
也请记住,当你正检查它的进程可能会关闭,所以准备捕获异常,并相应地处理它们。
最后,如果你打电话Process.GetProcesses()
你也将获得伪过程“闲置”和“系统”。 IIRC他们有具体的进程ID,因此您可以轻松地将它们过滤掉。
您使用什么操作系统?我把它从你的C#的标签,它的窗口?
如果是这样,检查出的WMI,特别是Win32_Process类。这里的MSDN参考:http://msdn.microsoft.com/en-us/library/aa394372(VS.85).aspx
还有一对夫妇在这里的使用场景(如获取进程的列表):http://msdn.microsoft.com/en-us/library/aa394599(VS.85).aspx
那么你可以在PowerShell中做到这一点
1.Finding所有进程
get-Process
2.Finding诊断属性对他们
get-Process | where-object { $_.Handles -gt 200 }
上面的代码将返回所有进程拥有超过200手柄,你可以用这种方式很容易地指定您的诊断属性。
using System.Diagnostics;
class Program
{
static void Main()
{
Process[] processlist = Process.GetProcesses();`
}
}
此处过程数组包含本进去过程的所有数。
这是我喜欢访问的过程:
static void Main(string[] args)
{
Process.GetProcesses().ToList().ForEach(p =>
{
Console.WriteLine(
p.ProcessName + " p.Threads.Count=" + p.Threads.Count + " Id=" + p.Id);
});
Console.ReadKey();
}