【发布时间】:2014-02-22 11:17:35
【问题描述】:
我正在尝试每秒获取 CPU 使用率。我已经为此设置了代码,所以那里没有问题。我试图在折线图上表示这些信息。我正在使用 wpf 工具包。我打算让图表有点类似于下图。 y 轴包含秒数,x 轴包含 cpu 使用率。
所以它就像图表上的秒数和 CPU 使用率一样不断更新。 (如果这不是一个好方法,我想要一些关于在图表上显示我的 CPU 使用率的更好方法的建议。)
我正在尝试找到一种方法来设置我的 dispatcherTimer,它每秒都在滴答作响,以便在 y 轴上更新。
这就是我当前图表的外观。
我对此一无所知,但我真的不确定如何将其设置为我正在寻找的东西。我相信我必须处理 pointcollection 值,但不能直接用 timer.tick (dispatchtimer) 替换数字。
图表代码如下:
<chartingToolkit:Chart Canvas.Left="25" Canvas.Top="307" Title="CPU Usage">
<chartingToolkit:Chart.DataContext>
<PointCollection>1,10 2,20 3,30 4,40</PointCollection>
</chartingToolkit:Chart.DataContext>
<chartingToolkit:LineSeries DependentValuePath="X" IndependentValuePath="Y" ItemsSource="{Binding}" Title="Cpu Usage">
<chartingToolkit:LineSeries.Background>
<RadialGradientBrush Center="0.075,0.015" GradientOrigin="-0.1,-0.1" RadiusY="0.9" RadiusX="1.05">
<GradientStop Color="#FFA9A3BD"/>
<GradientStop Color="#FF6C5B2C" Offset="1"/>
</RadialGradientBrush>
</chartingToolkit:LineSeries.Background>
</chartingToolkit:LineSeries>
</chartingToolkit:Chart>
我知道这个问题很可能不清楚,但我不知道该怎么说。我也找不到任何指南参考。如果这有助于更好地理解,我可以发布我的代码来检索 CPU 使用结果(每秒)。不想用太多信息把问题搞得一团糟。感谢您的任何指导。
计算每秒 CPU 使用率的代码:
class Monitor
{
Stats stats = new Stats();
public delegate void CPUEventHandler(object sender, CPUEventArgs args);
public event CPUEventHandler CPUEvent;
DispatcherTimer timer = new DispatcherTimer();
private static double cpuCurrent;
public Monitor()
{
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += TimeChanged;
timer.Start();
}
void TriggerCPUEvent(CPUEventArgs args)
{
if (CPUEvent != null)
{
CPUEvent(this, args);
}
}
public void TimeChanged(object sender, EventArgs e)
{
cpuCurrent = stats.GetCurrentCpuUsage();
TriggerCPUEvent(new CPUEventArgs(cpuCurrent));
}
}
class Stats
{
private PerformanceCounter cpuCounter;
public Stats()
{
cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
}
public float GetCurrentCpuUsage()
{
return cpuCounter.NextValue();
}
}
【问题讨论】:
-
不要担心用代码“垃圾”这个问题。我们喜欢这里的那些东西! :)
-
我已经编辑并添加了计算 CPU 使用率的代码部分。
标签: c# wpf xaml charts wpftoolkit