在实际编程中,有的时候需要密切注意CPU, Memory的变化。这个时候需要用到PerformanceCounter这个类,注意需要using System.Diagnostics;

这里只是在console上进行了一些测试,每一个CategoryName都有很多个CounterName。不需要对所有的CounterName都了解

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Diagnostics;
 using System.Threading;

 namespace ConsoleTest
 {
     class Program
     {
         public static void GetCategoryNameList()
         {
             PerformanceCounterCategory[] myCat2 = PerformanceCounterCategory.GetCategories();
             ; i < myCat2.Length; i++)
             {
                 Console.WriteLine(myCat2[i].CategoryName);
             }
         }
         public static void GetInstanceNameListANDCounterNameList(string CategoryName)
         {
             string[] instanceNames;
             List<PerformanceCounter> counters = new List<PerformanceCounter>();
             PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName);
             try
             {
                 instanceNames = mycat.GetInstanceNames();
                 )
                 {
                     counters.AddRange(mycat.GetCounters());
                 }
                 else
                 {
                     ; i < instanceNames.Length; i++)
                     {
                         counters.AddRange(mycat.GetCounters(instanceNames[i]));
                     }
                 }
                 ; i < instanceNames.Length; i++)
                 {
                     Console.WriteLine(instanceNames[i]);
                 }
                 Console.WriteLine("******************************");
                 foreach (PerformanceCounter counter in counters)
                 {
                     Console.WriteLine(counter.CounterName);
                 }
             }
             catch (Exception)
             {
                 Console.WriteLine("Unable to list the counters for this category");
             }
         }
         private static void PerformanceCounterFun(string CategoryName, string CounterName, string InstanceName)
         {
             PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);
             while (true)
             {
                 Thread.Sleep(); // wait for 1 second
                 float Load = pc.NextValue();
                 Console.WriteLine(CounterName + ": " + Load);
             }
         }
         static void Main(string[] args)
         {
             //GetCategoryNameList();
             GetInstanceNameListANDCounterNameList("Memory");
             //PerformanceCounterFun("Processor", "% Processor Time", "_Total");
             //PerformanceCounterFun("Processor", "Working Set", "_Total");
             //PerformanceCounterFun("Memory", "% Committed Bytes In Use", "");
             PerformanceCounterFun("Memory", "Available MBytes", "");
         }
     }
 }

C#: PerformanceCounter的使用的更多相关文章

  1. 利用Windows性能计数器(PerformanceCounter)监控

    一.概述 性能监视,是Windows NT提供的一种系统功能.Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器.性能对象,就 ...

  2. PerformanceCounter蛋痛的设计

    在.NET下对进程的性能计数可以使用PerformanceCounter,通过该对象可以对进程的CPU,内存等信息进行统计.对于正常使用来说这个对象还是很方便,但对于同一名称的多个进程进行性能计数那真 ...

  3. C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率

    C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率: 先看界面: 建一个 Windows Form  桌面程序,代码如下: using System; using Sys ...

  4. 计算机系统监控 PerformanceCounter

    PerformanceCounter 컴퓨터 성능 머니터링 CUP Processor 메모리 하터웨어 DB (CPU,User Connection,Batch Request,Blocking ...

  5. C#透过PerformanceCounter取得特定Process的CPU使用率

  6. C# 利用性能计数器监控网络状态

    本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...

  7. 使用PowerShell收集多台服务器的性能计数器

    写在前面     当管理多台Windows Server服务器时(无论是DB.AD.WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可能出现的原因 ...

  8. C#获取CPU占用率、内存占用、磁盘占用、进程信息

    代码: using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading ...

  9. asp.net mvc4 简单的服务器监控开发之C#获取服务器CPU、RAM、TCP等系统信息(上)

    一.背景 前段时间服务器出了点问题,加上学业愈来愈紧张,写博文分享的时间越来越少.虽然不是第一次在博客园上写经验,但是近期分享的博文得到了不少的朋友支持和指正,在这里内心非常感激和开心.希望以后能认真 ...

随机推荐

  1. error: jump to label ‘XXXX’ [-fpermissive]

    http://www.cnblogs.com/foohack/p/4090124.html 下面的类似的源码在MSVC上能正确编译通过.但是gcc/g++上就会错: 1. if(expr)2. got ...

  2. BLE Device Monitor

    发现 这东西基本是新工具,依赖CC2540 USB Dongle串口来运作 它能做很多事情,扫描设备,研究设备 经验 监控设备躲在这里 官方获得 跑道CC2541页面里去 http://www.ti. ...

  3. 蓝牙 BLE GATT 剖析(一)

    一.概述 The Generic Attribute Profile (GATT) defines a service framework using the Attribute Protocol. ...

  4. JS 去字符串空格 总结

    str为要去除空格的字符串: 去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.replace(/^\s+|\s+$/ ...

  5. sublime删除安装的插件

    如果想要删除插件,Ctrl+Shift+P调出命令面板,输入remove,调出Remove Package选项并回车,选择要删除的插件即可

  6. 去除Html标签

    public static string ParseTags(string Htmlstring)     {         //删除脚本          Htmlstring = Regex.R ...

  7. Magento Table Rate运费国家代码汇总

    Magento Table Rate是三种内置未调用第三方API运费方式中最强大的一个.通过设置国家,区域,邮编,价格来划分不同的运费等级.该方式基本能够满足轻量级的B2C商城的运费模式.这里收集下国 ...

  8. sqlserver 一个排序问题

    当 应用select * into a from b order by b1,b2语句时,试图使a表中的物理顺序改变,是 不能够实现的 select * into 同时复制了b表的物理结构,所以a表中 ...

  9. OPENCV3.1+VS 坑我笔记!

    1.调用findContours()函数程序崩溃. 原因: >>分析opencv源代码,跟踪测试,进入工程:opencv_imgproc 发现findContours函数 是调用 _fin ...

  10. IntelliJ IDEA大小写转换快捷键

    IntelliJ IDEA大小写转换快捷键 Ctr + Shift + u