using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Management;
using System.Runtime.InteropServices;
using System.Data;
using System.Data.SqlClient;
using System.DirectoryServices;
using System.Collections;
using System.Configuration;
using System.Collections.Specialized;
using System.IO;
namespace MON.Client
{
public static class SysInfo
{
static Dictionary<string, PerformanceCounter> dic;
static double DiskUsePercent;
static double SysDiskUsePercent;
static SysInfo()
{
try
{
dic = new Dictionary<string, PerformanceCounter>();
foreach (string setting in ConfigurationManager.AppSettings)
{
var arr = ConfigurationManager.AppSettings[setting].Split(\'#\');
if (arr[arr.Length - 1] == \"IsCounter\")
{
try
{
var pc = new PerformanceCounter(arr[0], arr[1], arr[2]);
dic.Add(setting, pc);
}
catch (Exception ex)
{
Console.WriteLine(arr[0] + \"找不到\");
Log.WriteLog(ex.Message);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Log.WriteLog(ex.Message);
}
}
static void initDiskInfo()
{
#region 备忘
//只获取系统盘代码如下
//ManagementObject CPANInfo = new ManagementObject(string.Format(\"win32_logicaldisk.deviceid=\\\"{0}\\\"\", System.Environment.SystemDirectory.Substring(0, 2)));
//CPANInfo.Get();
//var s = Convert.ToDouble(CPANInfo[\"Size\"]);
//var l = Convert.ToDouble(CPANInfo[\"FreeSpace\"]);
//var d = (s - l) / s * 100;
//return d;
#endregion
try
{
DriveInfo[] drives = DriveInfo.GetDrives();
long totalSize = 0;
long freeSize = 0;
long CTotalSize = 0;
long CFreeSize = 0;
foreach (DriveInfo drive in drives)
{
if (drive.DriveType == DriveType.CDRom)
{
continue;
}
totalSize += drive.TotalSize;
freeSize += drive.TotalFreeSpace;
if (drive.Name.StartsWith(System.Environment.SystemDirectory.Substring(0, 2)))
{
CTotalSize += drive.TotalSize;
CFreeSize += drive.TotalFreeSpace;
}
}
SysDiskUsePercent = (CTotalSize - CFreeSize) / (double)CTotalSize * 100;
DiskUsePercent = (totalSize - freeSize) / (double)totalSize * 100;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Log.WriteLog(ex.Message);
}
}
public static void Init()
{
//如有取数之前进行的业务可放在这里,提高性能
initDiskInfo();
}
public static double GetSysInfo(string InfoKey)
{
try
{
if (dic.ContainsKey(InfoKey))
{
return dic[InfoKey].NextValue();
}
else
{
if (InfoKey == \"SysDiskUsePercent\")
{
return SysDiskUsePercent;
}
else if (InfoKey == \"DiskUsePercent\")
{
return DiskUsePercent;
}
else
{
return -1;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Log.WriteLog(ex.Message);
return -1;
}
}
}
}
本文地址:https://www.stayed.cn/item/8656
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我