TotalProcessorTime拒绝访问

fjczhong2008 2009-07-16 09:10:55
private void timer2_Tick(object sender, EventArgs e)
{
int oldWorkingSet = 0;
int oldTimePercent = 0;
int newTimePercent = 0;
int lvProcessCount = listView1.Items.Count;
TimeSpan ts = (TimeSpan)(DateTime.Now - lastSysTime);
double sysTimeSpan = ts.TotalMilliseconds;
Hashtable htProcess = new Hashtable();
Process[] process = Process.GetProcesses();

foreach (Process p in process)
{
int s = p.TotalProcessorTime.Milliseconds;
htProcess.Add(p.Id.ToString(), p.Id);
ListViewItem item = lvProcessCount > 0 ? listView1.FindItemWithText(p.Id.ToString(), false, 0, false) : null;
if (item != null)
{
double processorTimeSpan = (double)Math.Abs(p.TotalProcessorTime.TotalMilliseconds - (double)item.Tag);
if (sysTimeSpan != 0)
{
processorTimeSpan = processorTimeSpan / sysTimeSpan;
newTimePercent = (int)(processorTimeSpan * 100 / Environment.ProcessorCount);
if (newTimePercent == 100)
{
newTimePercent = 99;
}
}
else
{
newTimePercent = 0;
}

oldTimePercent = int.Parse(item.SubItems[2].Text);

if (newTimePercent != oldTimePercent)
{
item.SubItems[2].Text = string.Format("{0:00}", newTimePercent);
}
oldWorkingSet = int.Parse(item.SubItems[3].Text);
if (p.WorkingSet != oldWorkingSet)
{
item.SubItems[3].Text = p.WorkingSet.ToString();
}
item.Tag = p.TotalProcessorTime.Milliseconds;
}
else
{
item = new ListViewItem(p.Id.ToString());
item.SubItems.Add(p.ProcessName);
item.SubItems.Add(string.Format("{0:00}", 0));
item.SubItems.Add(p.WorkingSet.ToString());
item.Tag = p.TotalProcessorTime.Milliseconds;
listView1.Items.Add(item);
}
lastSysTime = DateTime.Now;



}

}
item.Tag = p.TotalProcessorTime.Milliseconds;到了这一步的时候就拒绝访问了,请问是为什么,如何处理?
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjczhong2008 2009-07-17
  • 打赏
  • 举报
回复
恩,好像是这个样子的,谢谢了,楼上的这么多勋章,可不可以传授一点经验,目前正迷茫中。
cnzdgs 2009-07-16
  • 打赏
  • 举报
回复
Idle进程不能访问,判断p.Id==0时continue就可以了。
yanhuanghero 2009-07-16
  • 打赏
  • 举报
回复
bang ding
evaa006 2009-07-16
  • 打赏
  • 举报
回复
ding
gongsun 2009-07-16
  • 打赏
  • 举报
回复
...
jsoner 2009-07-16
  • 打赏
  • 举报
回复
item.Tag = p.TotalProcessorTime.Milliseconds
換成
item.Tag=p.TotalProcessorTime.TotalMilliseconds 試試
fjczhong2008 2009-07-16
  • 打赏
  • 举报
回复
item.Tag = p.TotalProcessorTime.TotalMilliseconds;
我换了,还是不行啊

110,499

社区成员

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

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

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