TotalProcessorTime拒绝访问
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;到了这一步的时候就拒绝访问了,请问是为什么,如何处理?