Использование памяти дисплея в 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 для соответствия его данным и заголовкам. (См.
В следующем коде показан метод 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 экзабайт.