⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitorsystemclass.cs

📁 监控系统
💻 CS
字号:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
//using MonitorSystem.BasicClass;

namespace MonitorSystem.BasicClass
{
	#region CPU监控规则
	/// <summary>
	/// CPU监控规则类
	/// </summary>
	public class CpuRule : MonitorRule
	{
		//cpu使用率检测的参数
		private const string CategoryName = "Processor";
		private const string CounterName = "% Processor Time";
		private const string InstanceName = "_Total";

		private PerformanceCounter pc = new PerformanceCounter (
			CategoryName,
			CounterName,
			InstanceName);

		/// <summary>
		/// 获取CPU的使用率
		/// </summary>
		/// <returns>使用率</returns>
		public float GetCpuState()
		{
			float cpuLoad = pc.NextValue();
			return cpuLoad;

		}

		public CpuRule()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

		/// <summary>
		/// 执行Cpu使用率的检测,将检测结果写入监控日志
		/// </summary>
		/// <returns>
		/// 0  - 获取CPU使用率成功
		/// -1 - 获取CPU使用率失败
		/// </returns>
		public override object ExcuteCollect()
		{

			this.LastExcuteTime = DateTime.Now;
			return GetCpuState();
		}
	}
	#endregion


	#region 内存监控规则
	/// <summary>
	/// 内存监控规则
	/// </summary>
	public class MemoryRule:MonitorRule
	{
		/// <summary>
		/// 内存信息
		/// </summary>
		[StructLayout(LayoutKind.Sequential) ] 
			private struct MEMORY_INFO 
		{
			public uint dwLength ;			//
			public uint dwMemoryLoad ;		//内存使用率
			public uint dwTotalPhys ;		//物理内存总数
			public uint dwAvailPhys ;		//可用物理内存总数
			public uint dwTotalPageFile ;	//
			public uint dwAvailPageFile ;	//
			public uint dwTotalVirtual ;	//
			public uint dwAvailVirtual ;	//
		}
		/// <summary>
		/// 获取内存信息
		/// </summary>
		[DllImport("kernel32")]
		private static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);

		/// <summary>
		/// 获取内存使用率
		/// </summary>
		/// <returns>使用率</returns>
		public uint GetMemoryState()
		{
			MEMORY_INFO MemInfo ;
			MemInfo = new MEMORY_INFO( ) ;
			GlobalMemoryStatus(ref MemInfo) ;

			return MemInfo.dwMemoryLoad;

		}

		/// <summary>
		/// 执行内存检测,将检测结果写入监控日志
		/// </summary>
		/// <returns>
		/// 0  - 成功
		/// -1 - 失败
		/// </returns>
		public override object ExcuteCollect()
		{
			this.LastExcuteTime = DateTime.Now;
			return GetMemoryState();
		}
	}
	#endregion

	#region HA监控规则
	/// <summary>
	/// 内存监控规则
	/// </summary>
	public class HARule:MonitorRule
	{
		public override object ExcuteCollect()
		{
			return "";
		}
	}
	#endregion

	#region HA监控规则
	public class ProcessRestartRule:MonitorRule
	{
		public string procuser="";
		public string prockey="";
		public string exceptkey="";

		public override object ExcuteCollect()
		{
			return "";
		}
	}
	#endregion

	#region 硬盘监控规则
	/// <summary>
	/// 获取硬盘剩余空间,单位:MB
	/// </summary>
	public class DiskRule:MonitorRule
	{
		public string m_DriverName="";
		/// <summary>
		/// 硬盘信息
		/// </summary>
		[StructLayout(LayoutKind.Sequential) ] 
			private struct DISK_INFO 
		{
			public long dwFreeBytesAvailable ;		//可用空间
			public long dwTotalNumberOfBytes ;		//总容量
			public long dwTotalNumberOfFreeBytes ;	//剩余空间
		}

		/// <summary>
		/// 获取硬盘信息
		/// </summary>
		[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
		private static extern int GetDiskFreeSpaceEx (
			string lpRootPathName,
			out long lpFreeBytesAvailable,
			out long lpTotalNumberOfBytes,
			out long lpTotalNumberOfFreeBytes);

		/// <summary>
		/// 获取磁盘剩余空间
		/// </summary>
		/// <param name="strDriverName">驱动器名</param>
		/// <returns>剩余空间</returns>
		public long GetDiskState(string strDriverName)
		{
			DISK_INFO DiskInfo;
			
			strDriverName += ":\\";
			GetDiskFreeSpaceEx(strDriverName, 
				out DiskInfo.dwFreeBytesAvailable, 
				out DiskInfo.dwTotalNumberOfBytes, 
				out DiskInfo.dwTotalNumberOfFreeBytes);

			return DiskInfo.dwFreeBytesAvailable/(1024*1024);
		}

		public override object ExcuteCollect()
		{
			this.LastExcuteTime = DateTime.Now;
			return GetDiskState(this.m_DriverName);
		}
	}

	#endregion

	#region 消息队列
	public class MsgQueue:MonitorRule
	{
		public string messagekey="";
		public string messageType="";


		public override object ExcuteCollect()
		{
			return 0;
		}
	}

	
	#endregion
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -