using System.Diagnostics; oder System.Diagnostics.Process.GetCurrentProcess (). Id; Ich schütze mich immer und gehe davon aus, dass aktuelle oder zukünftige Richtlinienregeln diesen Aufruf in einem gesperrten oder einschränkenden Modus einschränken, da er auf die Prozessbereiche zugreift.
SQL Surfer
16
Process.GetCurrentProcess().Id
Da die ProcessKlasse ist IDisposableund sich die Prozess-ID nicht ändert, während Ihre Anwendung ausgeführt wird, können Sie auch eine Hilfsklasse mit einer statischen Eigenschaft haben:
Das kommende .NET 5 wird vorgestellt, Environment.ProcessIddas vorzuziehen ist, Process.GetCurrentProcess().Idda Zuordnungen vermieden werden und das Prozessobjekt entsorgt werden muss.
Antworten:
Holen Sie sich einen Verweis auf den aktuellen Prozess und verwenden Sie
System.Diagnostics
dieProcess.Id
Eigenschaft:int nProcessID = Process.GetCurrentProcess().Id;
quelle
Process.GetCurrentProcess().Id
Da die
Process
Klasse istIDisposable
und sich die Prozess-ID nicht ändert, während Ihre Anwendung ausgeführt wird, können Sie auch eine Hilfsklasse mit einer statischen Eigenschaft haben:public static int ProcessId { get { if (_processId == null) { using(var thisProcess = System.Diagnostics.Process.GetCurrentProcess()) { _processId = thisProcess.Id; } } return _processId.Value; } } private static int? _processId;
quelle
Das kommende .NET 5 wird vorgestellt,
Environment.ProcessId
das vorzuziehen ist,Process.GetCurrentProcess().Id
da Zuordnungen vermieden werden und das Prozessobjekt entsorgt werden muss.https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ zeigt einen Benchmark, bei dem
Environment.ProcessId
nur 3 ns statt 68 ns benötigt werdenProcess.GetCurrentProcess().Id
.quelle