// Метод заполнения (тестирования) памяти
        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;
            }
        }
Exemple #2
0
        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;
        }