2024年3月14日发(作者:)
c#查看电脑内存
using System;
using c;
using ;
using ;
using ;
using ment;
using ;
using ;
using utes;
using dHelper;
using g;
namespace ds
{
[Command(Name = "memoryMonitorCommand", Description = "monitoring memory usage")]
public class MemoryMonitorCommand
{
private const string PROPERTY_CAPACITY = "Capacity";
private const string PROPERTY_AVAILABLE_BYTES = "AvailableBytes";
private const string PROPERTY_PROCESS_ID = "ProcessId";
private const string PROPERTY_PROCESS_NAME = "Name";
private const string PROPERTY_WORKING_SET_SIZE = "WorkingSetSize";
private const string QUERY_MEMORY1 = "SELECT * FROM Win32_PhysicalMemory";
private const string QUERY_MEMORY2 = "SELECT * FROM Win32_PerfRawData_PerfOS_Memory";
private const string QUERY_MEMORY3 = "SELECT * FROM Win32_Process";
ILog logger = ger(typeof(MemoryMonitorCommand));
[Parameter(Name = "appNames")]
public string AppNames;
[Execute]
public void Run()
{
var query1 = new SelectQuery(QUERY_MEMORY1);
var query2 = new SelectQuery(QUERY_MEMORY2);
var query3 = new SelectQuery(QUERY_MEMORY3);
var searcher1 = new ManagementObjectSearcher(query1);
var searcher2 = new ManagementObjectSearcher(query2);
var searcher3 = new ManagementObjectSearcher(query3);
var capacity = 0.0;
var free = 0.0;
foreach (var o in ())
capacity += (double)64(o[PROPERTY_CAPACITY]) / (double)(1024 * 1024);
foreach (var o in ())
free += (double)64(o[PROPERTY_AVAILABLE_BYTES]) / (double)(1024 * 1024);
//var appsUsed = new Dictionary
//var apps = (new[] { ';' }, EmptyEntries);
//foreach (var app in apps)
//{
// var appUsed = 0.0;
// foreach (var o in ())
// if ((ng(o[PROPERTY_PROCESS_NAME]), app, lIgnoreCase))
// appUsed += (double)64(o[PROPERTY_WORKING_SET_SIZE]) / (double)(1024 * 1024);
// (app, appUsed);
//}
var appsUsed = new Dictionary
var apps = (new[] { ';' }, EmptyEntries);
foreach (var o in ())
{
var appName = ng(o[PROPERTY_PROCESS_NAME]);
foreach (var app in apps)
{
if ((appName, app, lIgnoreCase))
{
var appId = 32(o[PROPERTY_PROCESS_ID]);
var workingSetSize = (double)64(o[PROPERTY_WORKING_SET_SIZE]) / (double)(1024 * 1024);
if (nsKey(appName))
appsUsed[appName].Add(appId, workingSetSize);
else
(appName, new Dictionary
{
{
appId, workingSetSize
}
});
break;
}
}
}
var memInfo = new MemoryInfo()
{
Capacity = capacity,
Free = free,
Used = capacity - free,
AppsUsed = appsUsed
};
var bin = new BinaryFormatter();
var ms = new MemoryStream();
ize(ms, memInfo);
("memory monitor begin execute callback");
ssage("memory usage info", y());
("memory monitor end execute callback");
}
}
}
发布评论