c#如何监控进程的线程?

wxyf3222 2008-07-07 10:33:01
想做一个程序,用它来监控另一个程序线程的运行情况,包括线程名、每个线程的CPU占有率、每个线程的运行时间等。
请问各位高手大侠:该怎么实现?
...全文
735 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxyf3222 2008-07-16
  • 打赏
  • 举报
回复
圆满完成既定要求,结贴。
wxyf3222 2008-07-12
  • 打赏
  • 举报
回复
采用各位高手的建议,又查了一点资料,快搞出来了。
谢谢各位,有什么困难再跟帖请教。
wxyf3222 2008-07-07
  • 打赏
  • 举报
回复
还有一个问题请教:选中某个进程后,该进程的线程的监视需定时刷新,但是不选中的时候,监视也需要在后台运行,请问该怎么实现?
yagebu1983 2008-07-07
  • 打赏
  • 举报
回复
没做过!!!
你去网上搜搜!!!
freeboy827 2008-07-07
  • 打赏
  • 举报
回复
Microsoft.VisualBasic查查这个命名空间下的方法
wxyf3222 2008-07-07
  • 打赏
  • 举报
回复
对,貌似任务管理器。

请问Deathsign:能不能给我一点示例代码。我没有这方面的经验。
Deathsign 2008-07-07
  • 打赏
  • 举报
回复
Process.Threads
线程
如果要得到CPU时间
就用WIN32
SystemInfo
freeboy827 2008-07-07
  • 打赏
  • 举报
回复
貌似任务管理器?
bbbbbb888888 2008-07-07
  • 打赏
  • 举报
回复
线程的CPU占有率?!不是进程?不会.
yilunduyue 2008-07-07
  • 打赏
  • 举报
回复
using System.Diagnostics;
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
ListViewItem listviewitem1;
string name;
int priorty, memorysize;
DateTime starttime;
Process[] process = Process.GetProcesses();
try
{
foreach (Process process1 in process)
{
name = process1.ProcessName;
priorty = process1.BasePriority;
memorysize = process1.PrivateMemorySize;
starttime = process1.StartTime;

listviewitem1 = new ListViewItem(name, 0);
listviewitem1.SubItems.Add(name.ToString());
listviewitem1.SubItems.Add(priorty.ToString());
listviewitem1.SubItems.Add(memorysize.ToString());
listviewitem1.SubItems.Add(starttime.ToString());
listView1.Items.Add(listviewitem1);
}
}
catch(Exception exe)
{
MessageBox.Show(exe.Message, "提示");
}


}
获取进程名,优先级,所占内存大小,及起始时间
生财 2008-07-07
  • 打赏
  • 举报
回复
帮你顶
hyblusea 2008-07-07
  • 打赏
  • 举报
回复
性能计数器PerformanceCounter.楼主可以去查查MSDN上面的相关资料.
hyblusea 2008-07-07
  • 打赏
  • 举报
回复
using System;
using System.Diagnostics;

class Program
{
static void Main(string[] args)
{
PerformanceCounter[] counters = new PerformanceCounter[ System.Environment.ProcessorCount ];
for(int i=0; i<counters.Length; i++)
{
counters[i] = new PerformanceCounter("Processor", "% Processor Time", i.ToString());
}

while(true)
{
for(int i=0; i<counters.Length; i++)
{
float f = counters[i].NextValue();
Console.WriteLine("CPU-{0}: {1:f}%", i, f);
}
Console.WriteLine();
System.Threading.Thread.Sleep(1000);
}
}
}



以上是通过性能计数器获得CPU频率的代码..当然.使用性能计数器来获得线程的CPU使用率和运行时间也是没有问题的.

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧