使用WPF动态显示CPU使用率

使用WPF动态显示CPU使用率

开源框架  admin  9个月前 (07-14)  1337浏览

基于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++;
    }
}
时间: 2024-09-30 14:10:53

使用WPF动态显示CPU使用率的相关文章

android之cpu使用率曲线效果的实现!

最近做一个效果:在手机设置里面"关于手机"里面添加一项来显示当前手机cpu使用率的曲线!其实现效果如下图所示: 上图关于手机的第一项就是我要实现的效果!今天来讲讲这个曲线的view(cpu_speedcurve_view)是如何实现的! 首先要注意以下几点: (1)由于我设计的cpu_speedcurve_view不仅仅显示动态的曲线,还需要用textview显示一些cpu相关信息!所以,我选择cpu_speedcurve_view继承一个viewgroup,这里我选择的是FrameL

[转] 查看CPU使用率 top命令详解

一 top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前 台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间 对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 说明:前五行都统计系统整体信息的 下面是进程信息区 1 第一行: 跟uptime 一样,分别是当前时间13:48 系统运行时间3 da

zabbix自动发现与监控内存和CPU使用率最高的进程

监控需求 某项目的应用服务器CPU和内存使用率的监控,通过zabbix系统监控记录应用服务器上进程的CPU和内存的使用情况,并以图表的形式实时展现,以便于我们分析服务器的性能瓶颈. 监控方式 利用zabbix监控系统的自动发现功能,首先编写shell脚本获取服务器的CPU和内存资源使用率最大的进程,以json的格式输出,然后对这些进程的CPU和内存资源使用情况进行监控.(本文监控的进程为Linux服务器中资源使用率最高的10个进程.) 缺点 不适用于监控固定的进程 首先使用top命令查看进程状态

Linux 下 CPU 使用率与机器负载的关系与区别

原文链接:  http://blog.chinaunix.net/uid-28541347-id-4926054.html 当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示.它表示系统在1,5,15分钟的平均工作负载.那么什么事负载(load)呢?它和cpu的利用率又有什么关系呢? load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CP

用python查看树莓的CPU使用率

http://www.blogjava.net/fjzag/articles/317773.html http://blog.csdn.net/a6225301/article/details/47092707 http://www.iplaypy.com/code/linux/l2546.html ------------------------------------------参考上面网址 感觉使用python就像是在复习liunx操作系统知识一样.python像是一头大蟒蛇控制着一切~p

服务器CPU使用率过高的处理

最近发现公司服务器搭建的网站访问缓慢,服务器输入命令也反应慢,处理步骤如下: 1.通过top命令查看服务器CPU.内存.IO等使用情况 发现CPU基本在80%以上:内存还好,有富余:CPU平均加载率Load Average也是达到40左右 2.通过vmstat.iostat参看相关参数,确认是CPU占用很高,CPU不够用,当时以为服务器CPU被用完了,但是应用不是很多,两CPU是够用的 3.后来慢慢看进程和服务线程以及端口号占用和包发送,(w.procinfo.ps.uptime.netstat

获取Windows操作系统的CPU使用率以及内存使用率

阅读目录 声明定义 引用lib文件 获取操作系统CPU使用率 获取操作系统内存大小 获取操作系统内存使用率 此功能参考了ProcessHacker项目的代码. 回到顶部 声明定义  Collapse typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64_DELTA, *PUINT64_DELTA; typedef struct _UINTPTR_DELTA { ULONG_PTR Value; ULONG_PT

%iowait和CPU使用率的正确认知

resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU Usage Time and Percentage is calculated Linux进程状态 man (on RHEL 7) # man mpstat %usr Show the percentage of CPU utilization that occurred while executi

top命令显示CPU使用率过了100%原因

1.使用top命令查看发现cpu使用率超过了100%,如下图: 4868 root      20   0  161m  768  568 S 100.1  0.0   6867:56 pidguard 2.我的机器是8cpu的,经过检查发现top命令显示的是占用的cpu总数. 即8cpu时top下cpu利用率最大可以到达800%. 如果你的进程利用了多个cpu,那么top命令显示的是多个cpu占用率的总和. 所以top命令下查看到的cpu利用率是可能超过100%的.