Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
 Аватар для ArhangelSM
15 / 15 / 4
Регистрация: 04.10.2010
Сообщений: 584

Cpu and Memory в label

08.04.2014, 14:42. Показов 4746. Ответов 26
Метки wmi (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите как получить загрузку процессора в % и размер занятого озу процессом в метрах
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2014, 14:42
Ответы с готовыми решениями:

Загрузка CPU, Memory, HDD в Solaris
Всем привет. Люди, очень СРОЧНЫЙ ВОПРОС! Подскажите плиз, как посмотреть загрузку CPU, Memory, HDD в Solaris. ? Какими командами?. ...

При старте ОС: The following DIMM module(s) did not pass CPU memory test
При старте ОС получаю такое сообщение: The following DIMM module(s) did not pass CPU memory test. Please remove the module(s) then plug...

Create an in memory bitmap and draw directly to the memory
Здравствуйте! У меня есть пара вопросов. Знаю, что рисовать в HDC можно только с одного потока. Но узнал такую вещь, что можно создать...

26
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
08.04.2014, 15:21
через wmi запрос , предварительно в проекте добавив ссылку на Management

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        private static ManagementObjectSearcher ramMonitor =    //запрос к WMI для получения памяти ПК
            new ManagementObjectSearcher("SELECT TotalVisibleMemorySize,FreePhysicalMemory FROM Win32_OperatingSystem");
 
        private static ManagementObjectSearcher cpuMonitor =    //запрос к WMI для получения загружености ЦП
            new ManagementObjectSearcher("SELECT LoadPercentage  FROM Win32_Processor");
 
 
        
        private void MonitorEnable()
        {
            
                foreach (ManagementObject objram in ramMonitor.Get())
                {
                    ulong totalRam = Convert.ToUInt64(objram["TotalVisibleMemorySize"]);    //общая память ОЗУ
                    ulong busyRam = totalRam - Convert.ToUInt64(objram["FreePhysicalMemory"]);         //занятная память = (total-free)
                    label1.Text = Convert.ToString((busyRam * 100) / totalRam);       //вычисляем проценты занятой памяти
                }
 
                foreach (ManagementObject objcpu in cpuMonitor.Get())
                {
                    label2.Text = Convert.ToString(objcpu["LoadPercentage"]); //записываем проценты загружености ЦП
                }
            
        }
Добавлено через 11 минут
а не заметил . в данном примере будет выдавать проценты загруженности обоих.
для занятой памяти ОЗУ в Мб изменить первый foreach на

C#
1
2
ulong totalRam = Convert.ToUInt64(objram["TotalVisibleMemorySize"]); 
             label1.Text =Convert.ToString (totalRam - Convert.ToUInt64(objram["FreePhysicalMemory"]));
2
 Аватар для ArhangelSM
15 / 15 / 4
Регистрация: 04.10.2010
Сообщений: 584
08.04.2014, 15:40  [ТС]
ммм а как насчет авто обновления?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
08.04.2014, 15:45
сделай таймер. в нем вызывай этот метод. или запусти в другой поток на бесконечном цикле
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
08.04.2014, 15:58
Почитайте вот это по поводу загрузки процессора.
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 18:05
Цитата Сообщение от Metall_Version Посмотреть сообщение
через wmi запрос , предварительно в проекте добавив ссылку на Management
Пробовал сделать только вычисление СPU, но вычисляется долго - около 1 секунды( Это из-за загруженности компа и нельзя ли как-то ускорить этот процесс?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 18:11
Цитата Сообщение от Pepsy Посмотреть сообщение
Пробовал сделать только вычисление СPU, но вычисляется долго - около 1 секунды( Это из-за загруженности компа и нельзя ли как-то ускорить этот процесс?
так работает wmi запрос. думаю быстрее никак.
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 18:13
Цитата Сообщение от Metall_Version Посмотреть сообщение
так работает wmi запрос. думаю быстрее никак.
А какой-то в корне другой способ есть? Просто при создании запроса каждую секунду приложение начинает зависать.
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 18:16
Pepsy, а зачем .. знать загрузку процессора с интервалом 1 секунду вполне норм.
логичней решать саму проблему , то есть причину зависания. а причина это то что ты в одном потоке все делаешь

я запускал в отдельном потоке, и все было отлично
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 18:25
Цитата Сообщение от Metall_Version Посмотреть сообщение
Pepsy, а зачем .. знать загрузку процессора с интервалом 1 секунду вполне норм.
логичней решать саму проблему , то есть причину зависания. а причина это то что ты в одном потоке все делаешь
я запускал в отдельном потоке, и все было отлично
Да, извините, всё нормально работает(закрыл бесполезные приложения), но есть одно но - проблема с закрытием приложения - попробовал нажать на крестик - нету результата, только через диспетчер. Это опять у меня не то что-то?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 18:31
Цитата Сообщение от Pepsy Посмотреть сообщение
Да, извините, всё нормально работает(закрыл бесполезные приложения), но есть одно но - проблема с закрытием приложения - попробовал нажать на крестик - нету результата, только через диспетчер. Это опять у меня не то что-то?
значит остается поток один работать.
покажите код
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 18:32
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private static ManagementObjectSearcher cpuMonitor = new ManagementObjectSearcher("SELECT LoadPercentage  FROM Win32_Processor");
        private void progressBar1_Click(object sender, EventArgs e)
        {
            var timer = new Timer(){Interval = 1000};
            timer.Tick += (o, args) =>
            {
                foreach (ManagementObject objcpu in cpuMonitor.Get())
                {
                    progressBar1.Value = Convert.ToInt16(objcpu["LoadPercentage"]); //записываем проценты загружености ЦП
                }
            };
            timer.Start();
        }
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 18:46
это таймер из System.Windows.Forms.Timer или System.Threading.Timer
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 18:50
C#
1
System.Threading.Timer
А может ли это происходить из-за того, что таймер на закрывается?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 19:11
Pepsy, возможно . не люблю эти таймеры
вот потоко-безопасный код , который через событие обновляет прогресс бар , работает в отдельном потоке

писал быстро на коленке, возможно туда можно чтото добавить

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        MyCPU myCPU;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            myCPU = new MyCPU();
            myCPU.CPU += Monitord;
            this.FormClosing += (o, ear) => myCPU.FinalizeMonitoring();
        }
 
        private void Monitord(object sender, MyEventArgs e)
        {
            Invoke(new Action(()=>progressBar1.Value = e.Percent));
        }
    }
 
    public class MyCPU
    {
        public event EventHandler<MyEventArgs> CPU;
 
        private ManagementObjectSearcher cpuMonitor =    //запрос к WMI для получения загружености ЦП
            new ManagementObjectSearcher("SELECT LoadPercentage  FROM Win32_Processor");
 
        private Thread monitThread;
        public MyCPU()
        {
            monitThread = new Thread(new ThreadStart(GetCpu));  //инициализируем делегат в новый поток 
            monitThread.Name = "SecondThreadMonitoring";
            monitThread.Start();                                //запускаем поток
        }
 
        public void FinalizeMonitoring()
        {
            if(monitThread!=null)
                monitThread.Abort();    //останавливаем поток
        }
        private void GetCpu()
        {
            int perc=0;
            for (; ; )
            {
                try
                {
                    foreach (ManagementObject objcpu in cpuMonitor.Get())
                        perc = Convert.ToInt32(objcpu["LoadPercentage"]); //записываем проценты загружености ЦП
 
                    if (CPU != null)
                    {
                        var args = new MyEventArgs() { Percent = perc };
                        CPU(this, args);
                    }
                }
                catch
                {
                    FinalizeMonitoring();
                }
            }
        }
 
    }
    public class MyEventArgs : EventArgs
    {
        public int Percent { get; set; }
    }
}
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 19:43
Цитата Сообщение от Metall_Version Посмотреть сообщение
Pepsy, возможно . не люблю эти таймеры
вот потоко-безопасный код , который через событие обновляет прогресс бар , работает в отдельном потоке
писал быстро на коленке, возможно туда можно чтото добавить
0_o, спасибо, буду разбираться)

Добавлено через 2 минуты
Цитата Сообщение от Metall_Version Посмотреть сообщение
C#
1
private Thread monitThread;
The type or namespace name 'Thread' could not be found (are you missing a using directive or an assembly reference?)
я что-то не подключил?

Добавлено через 21 минуту
Добавил
C#
1
using System.Threading
, запустился проект, но прогресс бар не изменяется(
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 19:45
Pepsy, а событие создал Form1_Load ?
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 19:51
Цитата Сообщение от Metall_Version Посмотреть сообщение
Pepsy, а событие создал Form1_Load ?
Понял, подключил). Такой вопрос - а где регулировать время обновления?

Добавлено через 2 минуты
Цитата Сообщение от Metall_Version Посмотреть сообщение
C#
1
2
3
4
private void Monitord(object sender, MyEventArgs e) 
{
          Invoke(new Action(()=>progressBar1.Value = e.Percent));
}
Здесь слип добавлять?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
26.05.2014, 19:57
Цитата Сообщение от Pepsy Посмотреть сообщение
Понял, подключил). Такой вопрос - а где регулировать время обновления?
а зачем ? он сам с частотой в секунду будет обновлять. кушает нагрузки ЦП мало

Добавлено через 39 секунд
Цитата Сообщение от Pepsy Посмотреть сообщение
Здесь слип добавлять?
если добавишь то основной поток будеть спать
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.05.2014, 19:57
Цитата Сообщение от Metall_Version Посмотреть сообщение
а зачем ? он сам с частотой в секунду будет обновлять. кушает нагрузки ЦП мало
просто в задании есть требование - регулировать частоту обновления)). Сейчас попробовал - вроде туда кидать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2014, 19:57
Помогаю со студенческими работами здесь

CPU греется до 75 градусов , проц : Intel Pentium(R) 4 CPU 3.00GHz
У меня проблема, CPU греется до 75 градусов , проц : Intel Pentium(R) 4 CPU 3.00GHz материнка : ASRock P4VM890. Минимум 65, не знаю что...

M2N68 AM SE2. This CPU is not supported by this model. Please check CPU QVL on ASUS website
При загрузке БИОС выдает ошибку &quot;This CPU is not supported by this model. Please check CPU QVL on ASUS website.&quot; и нажмите f1, нажимаю f1 и...

This kernel requires an x86-64 CPU but only detected on i686 CPU при установке Kali
Не могу установить kali на виртуалку - this kernel requires an x86-64 CPU but only detected on i686 CPU.

Warning! CPU has been changed. Please re-enter CPU settings in the CMOS setup and remember to save before quit!
Warning! CPU has been changed. Please re-enter CPU settings in the CMOS setup and remember to save before quit! выдаёт компьютер при...

Материнская плата M5A78L-M LE (БИОС) БИОС выдает "This CPU is not supported by this model. Please check CPU QV
Здравствуйте! Материнская плата M5A78L-M LE, процессор AMD Phenom II X4 965 Black. Сегодня обновил БИОС с версии 1102 до 1601 – от сюда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru