Neu in .NET 6 [10]: Ergänzungen in System.Environment

Der Dotnet-Doktor Holger Schwichtenberg  –  0 Kommentare

Die Serie zu den Neuerungen in .NET 6 behandelt im zehnten Teil den Zugang zu Informationen über laufende Prozesse.

Die statische Klasse System.Environment gehört zum Urgestein in .NET: Sie existiert seit dem .NET Framework 1.0 aus dem Jahr 2002. Nun in .NET 6 hat Microsoft in diese Klasse zwei neue statische Eigenschaften aufgenommen:

  • Environment.ProcessId liefert die Prozess-Identifikationsnummer des aktuellen Prozesses.
  • Environment.ProcessPath liefert den Pfad zur ausführbaren Datei, die den Prozess gestartet hat.

Alte .NET-Hasen wissen, dass man diese Informationen auch bisher schon aus der .NET-Basisklassenbibliothek bekommen konnte aus der Klasse System.Diagnostics.Process:

System.Diagnostics.Process p = Process.GetCurrentProcess();
Console.WriteLine(p.Id);
Console.WriteLine(p.MainModule.FileName);

Der neue Weg ist aber effizienter, weil die Implementierungen der beiden neuen Properties direkt Betriebssystem-APIs abfragen – ohne den Zusätzliche Overhead über die Klassen System.Diagnostics.Process. Das kann man sich im Quellcode auf GitHub ansehen, in Verbindung mit der Windows-Implememtierung und der Unix-Implementierung mit der zugehörigen Umsetzung von Interop. Hintergründe findet man in der Diskussion zu Issue #40862.