使用WPF动态显示CPU使用率

基于WPF的开源图表控件有很多,大多数都是静态图表,如果需要绘制CPU使用率这样的动态数据就显得力不从心,微软开源的DynamicDataDisplay控件弥补了这个不足,为了做个备忘,我用它来实时绘制CPU使用率曲线,当然,这个控件也可以绘制动态线图、气泡图和热力图,具体可参阅官网示例代码,使用方法非常简单,下面就直接贴代码,文本末尾提供VS2013的示例代码下载。
1、首先需要在项目中引用DynamicDataDisplay.dll,该程序集可通过官网下载或者NuGet方式搜索获去,在包控制台执行以下命令即可自动引用。
PM> Install-Package DynamicDataDisplay
2、在XAML文件中引用D3命名空间,同时添加一个名为ChartPlotter的图表控件。
<Window x:Class="WpfCpuUsageSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
Title="MainWindow" Loaded="Window_Loaded" Height="350" Width="525">
<Grid>
<d3:ChartPlotter Grid.Column="0" Grid.Row="0" Name="plotter"/>
</Grid>
</Window>
3、在后台窗体类中申明数据源ObservableDataSource用于为图表控件提供数据,PerformanceCounter是性能计数器,可通过它来获取CPU使用率,DispatcherTimer是一个基于WPF的计时器,支持在子线程异步通知UI线程,在窗口加载事件中初始化这些类,并未计时器绑定一个处理程序,用于获取CPU使用率,并将当前的使用率加入到动态曲线中。
public partial class MainWindow : Window
{
private ObservableDataSource<Point> dataSource = new ObservableDataSource<Point>();
private PerformanceCounter performanceCounter = new PerformanceCounter();
private DispatcherTimer dispatcherTimer = new DispatcherTimer();
private int currentSecond = 0; public MainWindow()
{
InitializeComponent();
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
plotter.AddLineGraph(dataSource, Colors.Green, 2, "Percentage");
plotter.LegendVisible = false;
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick += timer_Tick;
dispatcherTimer.IsEnabled = true;
plotter.Viewport.FitToView();
} private void timer_Tick(object sender, EventArgs e)
{
performanceCounter.CategoryName = "Processor";
performanceCounter.CounterName = "% Processor Time";
performanceCounter.InstanceName = "_Total"; double x = currentSecond;
double y = performanceCounter.NextValue(); Point point = new Point(x, y);
dataSource.AppendAsync(base.Dispatcher, point); currentSecond++;
}
}
使用WPF动态显示CPU使用率的更多相关文章
- WPF 动态模拟CPU 使用率曲线图
原文:WPF 动态模拟CPU 使用率曲线图 在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图.但是如果基础数据频繁更改, ...
- [转] 查看CPU使用率 top命令详解
一 top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前 台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示 ...
- %iowait和CPU使用率的正确认知
resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...
- 制造高CPU使用率的简单方法
在群里有人问制造CPU占用率高的场景用来做测试.所谓做好事难,干“坏”事还不容易?这个需求有很多方法可以实现,比如使用一些压力测试工具.我首先想 到的是HASH JOIN.这个联接比较消耗CPU资源, ...
- 使用mysqlslap对mysql进行压测,观察Azure虚拟机cpu使用率
一直想做这个测试,原因很简单,很多人一直比较怀疑Azure的虚拟机性能,说相同的配置凭啥比阿里的虚拟机贵那么多,其实,我自己以前也怀疑过,但是接触Azure的几个月,确实发现Azure的虚拟机性能真的 ...
- 获取Windows操作系统的CPU使用率以及内存使用率
此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...
- CPU使用率终于正常了——记一次订餐系统事故处理
引子 经过漫长的等待,儿子终于出生了.欣喜之余,就是各种手足无措,顾此失彼了.因为不懂,心里总是慌慌的,有点小毛病,恨不得一步就到医院. 婆媳育儿观念的差异,让心乱如麻的我,又成了风箱里的老鼠,两个不 ...
- zabbix监控单核cpu使用率和多核cpu总负载
zabbix自带的基础监控的模板中只有对单核cpu负载1分钟.5分钟.15分钟的监控. 添加对总的cpu负载的监控 key:system.cpu.load[all,avg1] 1分钟cpu总的负载 添 ...
- 如何定位死循环或高CPU使用率(linux)
如何定位死循环或高CPU使用率(linux) 确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid ...
随机推荐
- gulp API 文档
gulp.src(globs[, options]) 输出(Emits)符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件. 将返回一个 Vinyl files ...
- 保存指定目录及其子目录的jpg文件
import os txt_path = 't1.txt' f = open(txt_path, mode='a', encoding='utf-8') def all_path(dirname): ...
- 20165232第4次实验《Android程序设计》实验报告
20165232第4次实验<Android程序设计>实验报告 一.实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:何彦达 学号:20165232 指导教师: ...
- 在Ajax返回多个值
<html> <head> <title>AjaxTest</title> <script type="text/javascript& ...
- Oracle和Mysql的安装
Oracle12C的安装:https://blog.csdn.net/qubeleyz/article/details/79451192 Mysql安装:
- 面向对象(Object Orientation Programming)
Three characteristic of object orientation: Encapsulation: capturing data and keeping it safely and ...
- PHP 调第三方跨域接口示例
<?php ); //错误信息 ); //php启动错误信息 ini_set('date.timezone','Asia/Shanghai'); ); //打印出所有的 错误信息 ini_set ...
- Java时间转换的一个特性
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date codedat ...
- spring注解第01课 @Configuration、@Bean
一.原始的 xml配置方式 1.Spring pom 依赖 <dependency> <groupId>org.springframework</groupId> ...
- Docker摘要
Docker https://www.docker.com/ 消除应用的依赖矩阵. 消除硬件依赖 和 软件依赖. Escape the app dependency matrix Eliminate ...