Kann ein C # -Programm irgendwie seine eigene CPU-Auslastung messen?

Ich arbeite an einem Hintergrundprogramm, das für eine lange Zeit ausgeführt wird, und ich habe ein externes Protokollierungsprogramm SmartInspect) die ich regelmäßig mit einigen Werten versorgen möchte, um sie beim Debuggen in Echtzeit zu überwachen.

Ich weiß, dass ich einfach mehrere Programme wie den Task-Manager oder IARSN TaskInfo starten kann, aber ich möchte dafür alles in meinem eigenen Programm behalten, da ich auch einige einfache Regeln hinzufügen möchte, wenn das Programm mehr verwendet als X% CPU, kennzeichnen Sie dies im Protokoll.

Ich habe einen Hintergrund-Thread, der regelmäßig statistische Daten an SmartInspect weiterleitet, z. B. den Speicherverbrauch, den Arbeitssatz usw.

Ist es möglich, dass dieser Thread einigermaßen genau misst, wie viel CPU-Ressourcen der Computer verbraucht? Das Hauptprogramm ist eine Single-Thread-Anwendung (abgesehen vom Watchdog-Thread, der Statistiken protokolliert). Wenn also eine Technik auf @ beschränkt isie viel kostet ein einzelner Threa dann wäre das auch gut.

Ich habe einige Einträge mit dem Namen @ gefunde rusage für Linux und C. Gibt es etwas Ähnliches, das ich dafür verwenden kann?

Bearbeiten Ok, ich habe versucht, den Leistungsindikator zu verwenden, aber es wurden jedes Mal eine ganze Menge GC-Daten hinzugefügt, so dass die Grafik für die Speichernutzung und die Speicherbereinigung in die Höhe geschossen ist. Ich schätze, ich lasse diesen Teil erst einmal weg.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage