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.
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();
}
}
}