Wie erhalte ich die aktuelle ProcessID?

80

Was ist der einfachste Weg, um die aktuelle Prozess-ID mithilfe von .NET Framework aus Ihrer eigenen Anwendung abzurufen?

plaureano
quelle
2
Wahr. Ich denke, hier ist etwas schief gelaufen: D @VictorYarema
Deniz

Antworten:

120

Holen Sie sich einen Verweis auf den aktuellen Prozess und verwenden Sie System.Diagnosticsdie Process.IdEigenschaft:

int nProcessID = Process.GetCurrentProcess().Id;
luvieere
quelle
2
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:

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;
Joe
quelle
5

Das kommende .NET 5 wird vorgestellt, Environment.ProcessIddas vorzuziehen ist, Process.GetCurrentProcess().Idda 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.ProcessIdnur 3 ns statt 68 ns benötigt werden Process.GetCurrentProcess().Id.

ckuri
quelle