Использование памяти дисплея в C#
Эта программа отображает общее и бесплатное использование физической, виртуальной и файловой памяти компьютера. Когда он запускается, следующий код отображает информацию о памяти системы в элементе управления ListView программы.
// Подготовьте ListView и отобразите значения.
private void Form1_Load(object sender, EventArgs e)
{
// Создаем столбцы.
lvwInfo.View = View.Details;
lvwInfo.SetColumnHeaders(new object[]
{
"Property", HorizontalAlignment.Left,
"Value", HorizontalAlignment.Right
});
// Добавьте значения.
ManagementObjectSearcher os_searcher =
new ManagementObjectSearcher(
"SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject mobj in os_searcher.Get())
{
GetInfo(mobj, "FreePhysicalMemory");
GetInfo(mobj, "FreeSpaceInPagingFiles");
GetInfo(mobj, "FreeVirtualMemory");
GetInfo(mobj, "SizeStoredInPagingFiles");
GetInfo(mobj, "TotalSwapSpaceSize");
GetInfo(mobj, "TotalVirtualMemorySize");
GetInfo(mobj, "TotalVisibleMemorySize");
}
// Размер столбцов.
lvwInfo.SizeColumnsToFitDataAndHeaders();
}
Этот код устанавливает свойство View элемента управления ListView для отображения деталей. Затем он вызывает метод расширения SetColumnHeaders, чтобы заставить элемент управления отображать два заголовка столбца: Свойство и значение.
Затем программа создает ManagementObjectSearcher, чтобы получить информацию из структуры Win32_OperatingSystem. Он перебирает возвращаемых поисковиков (их будет только один) и вызывает метод GetInfo, чтобы получить информацию о нескольких свойствах поисковика.
Код заканчивается вызовом метода SizeColumnsToFitDataAndHeaders для размера столбцов элемента управления ListView для соответствия его данным и заголовкам. (См. для получения информации о методах расширения ListView.)
В следующем коде показан метод GetInfo.
// Добавить информацию о свойстве в ListView.
private void GetInfo(ManagementObject mobj, string property_name)
{
object property_obj = mobj[property_name];
if (property_obj == null)
{
lvwInfo.AddRow(property_name, "???");
}
else
{
ulong property_value = (ulong)property_obj * 1024;
lvwInfo.AddRow(property_name,
property_value.ToFileSizeApi());
}
}
Этот метод получает информацию о свойствах из ManagementObject, используя имя свойства в качестве индекса. Если результат null, код добавляет имя свойства и некоторые вопросительные знаки в элемент управления ListView. Если объект не является null, код преобразует его в unsigned long и отображает имя свойства и его значение в ListView.
Обратите внимание, что возвращаемое значение находится в KB, поэтому код умножает результат на 1024. Возвращаемое значение равно unsigned long, поэтому оно может обрабатывать значения до 18 446 744 073 709 551 615, что составляет более 16 экзабайт.
