// Метод заполнения (тестирования) памяти private void FillMemory() { ////// ЗАБИВАЕМ ПАМЯТЬ \\\\\\\ // Заполняем память паттерном (если запущено заполнение и недостигнут зарезервированный порог памяти) if (fillingRAM && (freeRam / 1024 > Convert.ToDouble(nudReservedRAMValue.Value))) { // Если ещё много заполнять, то заполняем с указаной пользователям скоростью за секунду if (((freeRam / 1024) - Convert.ToDouble(nudReservedRAMValue.Value)) >= Convert.ToDouble(nudFillRateValue.Value)) { multiplier = Convert.ToInt32(nudFillRateValue.Value); } else // Если осталось заполнить меньше, чем шаг заполнения за секунду, то уменьшаем до единичного паттерна { multiplier = 1; } ClassRAM.FillMemory(); } else if (fillingRAM && (freeRam / 1024 <= Convert.ToDouble(nudReservedRAMValue.Value))) { btnPauseFillRAM.Enabled = false; btnPauseFillRAM.BackColor = Color.LightGray; btnFreeRAM.Enabled = true; btnFreeRAM.BackColor = Color.DeepSkyBlue; } }
bool fillingRAM = false; // true - запущен процесс заполнения памяти; false - процесс заполнения остановлен // Вызов события сработал таймер private void tmrCheckRAMSizeAndCPULoad_Tick(object sender, EventArgs e) { // Забираем в цикле искомые значения объёмов памяти foreach (ManagementObject objram in ramMonitor.Get()) { totalRam = Convert.ToDouble(objram["TotalVisibleMemorySize"]); freeRam = Convert.ToDouble(objram["FreePhysicalMemory"]); busyRam = totalRam - freeRam; } // Выводим общий доступный объём памяти lblTotalRAMValue.Text = Convert.ToString(Convert.ToInt32(totalRam / (1024 * 1024))) + " ГБ"; double RAM; if (lblUsedFreeRAM_usage) { lblUsedFreeRAM.Text = "Занято"; prgUsedFreeRAM.Value = Convert.ToInt32(busyRam / totalRam * 100); RAM = busyRam; } else { lblUsedFreeRAM.Text = "Свободно"; prgUsedFreeRAM.Value = Convert.ToInt32(freeRam / totalRam * 100); RAM = freeRam; } if (lblUsedFreeRAMValue_percent) { lblUsedFreeRAMValue.Text = Convert.ToString(Convert.ToInt32(RAM / totalRam * 100)) + " %"; } else { lblUsedFreeRAMValue.Text = Convert.ToString(Convert.ToInt32(RAM / (1024))) + " МБ"; } ////// ЗАБИВАЕМ ПАМЯТЬ \\\\\\\ // Заполняем память паттерном (если запущено заполнение и недостигнут зарезервированный порог памяти) if (fillingRAM && (freeRam / 1024 > Convert.ToDouble(nudReservedRAMValue.Value))) { // Если ещё много заполнять, то заполняем с указаной пользователям скоростью за секунду if (((freeRam / 1024) - Convert.ToDouble(nudReservedRAMValue.Value)) >= Convert.ToDouble(nudFillRateValue.Value)) { multiplier = Convert.ToInt32(nudFillRateValue.Value); } else // Если осталось заполнить меньше, чем шаг заполнения за секунду, то уменьшаем до единичного паттерна { multiplier = 1; } ClassRAM.FillMemory(); } else if (fillingRAM && (freeRam / 1024 <= Convert.ToDouble(nudReservedRAMValue.Value))) { btnPauseFillRAM.Enabled = false; btnPauseFillRAM.BackColor = Color.LightGray; btnFreeRAM.Enabled = true; btnFreeRAM.BackColor = Color.DeepSkyBlue; } // Отладка листа коллекций // decimal ListSize = ClassRAM.arrayList_Count; // lblPoolSize.Text = ListSize.ToString(); int totalCPUUsage = 0; // Объявляем переменную для хранения текущей загрузки CPU // Забираем в цикле искомые значения загрузки ЦП foreach (ManagementObject objcpu in cpuMonitor.Get()) { totalCPUUsage = Convert.ToInt32(objcpu["PercentProcessorTime"]); //общая загрузка ЦП } // Выводим загрузку ЦП на форму lblUsedCoreValue.Text = totalCPUUsage.ToString() + " %"; prgUsedCore.Value = totalCPUUsage; }