zurück zum Artikel

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

Dr. Holger Schwichtenberg

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

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:

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 [1], in Verbindung mit der Windows-Implememtierung [2] und der Unix-Implementierung [3] mit der zugehörigen Umsetzung von Interop [4]. Hintergründe findet man in der Diskussion zu Issue #40862 [5].

( [6])


URL dieses Artikels:
https://www.heise.de/-6292140

Links in diesem Artikel:
[1] https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Environment.cs
[2] https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Environment.Windows.cs
[3] https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Environment.Unix.cs
[4] https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetProcessPath.cs
[5] https://github.com/dotnet/runtime/issues/40862
[6] mailto:hs@ix.de