我们有C#.Net windows应用程序,从这个应用程序我需要跟踪当前正在运行的进程的内存和CPU使用情况详细信息。我尝试了下面提到的代码来获取内存细节。
Process curProcess=Process.GetCurrentProcess();
Console.Writeline(curProcess.PrivateMemorySize64);
Console.Writeline(curProcess.VirtualMemorySize64);
Console.Writeline(curProcess.PagedMemorySize64);
Console.Writeline(curProcess.NonpagedSystemMemorySize64);
var counter = new PerformanceCounter("Process", "Working Set - Private", Process.GetCurrentProcess().ProcessName);
Console.Writeline(curProcess.PagedMemorySize64);
Console.Writeline(counter.RawValue);
以上所有代码都给出了整个进程的内存详细信息,但我的要求是获取以下详细信息,
处理线程及其关系。
请向我发送一些代码示例以满足我的要求。
注意:我尝试了CLR配置文件和ANTS配置文件以获取有关内存的详细信息,但我确实需要示例代码才能在我的应用程序中实现。
非常感谢。
答案 0 :(得分:0)
获取有关处理器,操作系统等的信息:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
namespace HaardDiskInfoCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ManagementObjectSearcher mosProcessor = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject moProcessor in mosProcessor.Get())
{
if(moProcessor["maxclockspeed"]!=null)
lblPMCSpeed.Text = moProcessor["maxclockspeed"].ToString();
if(moProcessor["datawidth"]!=null)
lblPDataWidth.Text = moProcessor["datawidth"].ToString();
if(moProcessor["name"]!=null)
lblPName.Text=moProcessor["name"].ToString();
if(moProcessor["manufacturer"]!=null)
lblPManufacture.Text = moProcessor["manufacturer"].ToString();
}
}
}
}