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");

}

}

}