在编写各种服务器的时候,经常会需要调取CPU使用、网络队列等关键数据,以便更好的管理各种事务。
那么在C#中如何调取服务器的这些数据呢?
PerformanceCounter a = new PerformanceCounter("计数器类名", "计数器名", "实例名,单一实例时可以为空");
log.Debug(a.NextValue());
对,就是那么简单。
以下就是各种名称:1就是计数器类名,2就是计数器名,3就是实例名
多简单对不?
那么,如何将服务器的数据发送到性能监视器上去,方便我们查看服务器的各种状态呢?
首先,我们需要在系统中增加这个计数器到windows
//计数器类型名称
string 计数器类名 = "hmok";
//计数器名称
string 计数器名 = "吃饭的碗数";
if (PerformanceCounterCategory.Exists(计数器类名))
{
PerformanceCounterCategory.Delete(计数器类名);
}
//1个计数器的集合
CounterCreationDataCollection ccdc = new CounterCreationDataCollection();
//计数器
CounterCreationData ccd = new CounterCreationData(计数器名, "他吃饭的多少", PerformanceCounterType.NumberOfItems64);
ccdc.Add(ccd);
//使用PerformanceCounterCategory.Create创建一个计数器类别
PerformanceCounterCategory.Create(计数器类名, "", PerformanceCounterCategoryType.MultiInstance, ccdc);
OK,这样就在性能监视器上增加了这个计数器了,你可以去找找看把!
然后,我们需要使用这个计数器显示数值
//定义这个计数器
static PerformanceCounter counter1 = null;
初始化这个计数器,在任何方法里面初始化
//初始化计数器实例
counter1 = new PerformanceCounter();
counter1.CategoryName = 计数器类名;
counter1.CounterName = 计数器名;
//计数器实例的名称-显示在windows性能监视器里面实例的名字
counter1.InstanceName = "我的计数器实例名称";
//实例存在的时间,=进程的时间
counter1.InstanceLifetime = PerformanceCounterInstanceLifetime.Process;
counter1.ReadOnly = false;
counter1.RawValue = 0;
增加值或者减少值,或者设置值
//设置值为
counter1.RawValue = 0;
//值加1
counter1.Increment();
//值加3
counter1.IncrementBy(3);
//值减1
counter1.Decrement();
OK,去看看监视器把