.NET(C#):监控CPU和内存的使用状况

最近在用C#/WPF写一个任务管理器程序,先把监控CPU和内存的部分单独放出来。

image

 

完全和任务管理器显示同样的数据:

image

 

 

当前版本的程序和源代码下载

下载地址

注意:此为微软SkyDrive存档,请用浏览器直接下载,用某些下载工具可能无法下载

程序运行环境:.NET Framework 4.0 Client Profile

源代码环境:Visual Studio 2010

 

 

作者:Mgen

关于代码,CPU方面的以前讲过,可以参考:

.NET(C#)监控CPU使用状况

.NET(C#)获取进程的CPU使用

 

 

内存上比较有趣,方法有很多。可以使用WMI的Win32_PhysicalMemory,但是由于程序要频繁(每秒一次)进行信息的刷新,所以使用WMI会难免有些慢。第二就是使用API的GlobalMemoryStatus方法,缺点是需要进行平台调用的一些列套路(DllImport,参数的封送……)。程序用第三种方法,直接引用 Microsoft.VisualBasic.dll类库(在.NET Framework 2.0后加入的类库,属于.NET Framework本身),并用ComputerInfo类型的AvailablePhysicalMemory和TotalPhysicalMemory来获取当前剩余/全部物理内存。注意每当获取上述属性,它们的值会自动刷新的,不需要调用其他方法。

 

事实上第三种方法内部也调用了GlobalMemoryStatus API方法,你可以在ILSpy找到相应线索。(ComputerInfo的私有Refresh方法会调用NativeMethods.GlobalMemoryStatus平台调用)。

 

其他关于内存的可以参考:

.NET(C#):获取进程的内存私有工作集

.NET(C#)自己做一个系统信息查看器

posted @ 2012-03-31 14:10  Net-Spider  阅读(4292)  评论(0)    收藏  举报