Laden...
T
tklustig
myCSharp.de - Member
1
Themen
2
Beiträge
Letzte Aktivität
vor 3 Monaten
Dabei seit
06.10.2024
Erstellt vor 3 Monaten

Vielen Dank. Das Objekt nur einmal zu erstellen und dann weiter zu geben fixt das Problem. Verwende im übrigen C# 7.3, so dass Dein Code nicht funktioniert.

Erstellt vor 3 Monaten

Hallo, dieser eigentlich triviale Code soll die CPU Auslastung in eine Textdatei schreiben. Geschrieben wird die Datei, aber die CPU Auslastung ist immer bei 0 %, auch dann, wenn ich CPU lastige Games spiele. Was stimmt an diesem Code nicht?

using System;
using System.IO;
using System.Threading;

namespace CPUAuslastung {
    internal class Program {
        static void Main(string[] args) {
            string folderName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string fileName = "CPU.txt";
            StreamWriter sr = new StreamWriter(Path.Combine(folderName, fileName), true);
            int counter = 0;
            while (true) {
                string Value2BeWritten = Program.OnTimedEvent().ToString();             
                string dateNTime = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");
                Console.WriteLine($"Write CPU-Auslastung in %:{Value2BeWritten} into file {fileName}");
                sr.WriteLine($"CPU-Auslastung am {dateNTime}-->{Value2BeWritten}%");
                if (counter >= 20) {
                    sr.Close();
                    Environment.Exit(0);                 
                }
                counter++;
                Thread.Sleep(5000);
            }
        }
        private static float OnTimedEvent() {
            CPU objCPU = new CPU();
            return objCPU.GetCPUusage();
        }
    }
}
using System;
using System.Diagnostics;

namespace CPUAuslastung {
    internal class CPU {
        public float GetCPUusage() // Liefert die aktuelle Auslastung zurück
        {
            PerformanceCounter cpuCounter = new PerformanceCounter();
            cpuCounter.CategoryName = "Processor";
            cpuCounter.CounterName = "% Processor Time";
            cpuCounter.InstanceName = "_Total"; // "_Total" entspricht der gesamten CPU Auslastung, Bei Computern mit mehr als 1 logischem Prozessor: "0" dem ersten Core, "1" dem zweiten...
            return cpuCounter.NextValue();
        }
    }
}