Jak uzyskać aktualny ProcessID?

83

Jaki jest najprostszy sposób uzyskania bieżącego identyfikatora procesu z własnej aplikacji przy użyciu platformy .NET Framework?

plaureano
źródło
2
Prawdziwe. Myślę, że coś poszło nie tak: D @VictorYarema
Deniz

Odpowiedzi:

121

Odwołać się do bieżącego procesu i użycia System.Diagnostics„s Process.Idnieruchomości:

int nProcessID = Process.GetCurrentProcess().Id;
luvieere
źródło
2
using System.Diagnostics; lub System.Diagnostics.Process.GetCurrentProcess (). Id; Zawsze chronię się i zakładam, że obecne lub przyszłe reguły polityki ograniczą to połączenie w pewnym trybie zablokowanym lub restrykcyjnym, ponieważ ma dostęp do obszarów procesu.
Sql Surfer
17
Process.GetCurrentProcess().Id

Lub, ponieważ Processklasa jest IDisposable, a identyfikator procesu nie zmieni się podczas działania aplikacji, możesz mieć klasę pomocniczą z właściwością statyczną:

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
źródło
7

Nadchodzący .NET 5 wprowadza, Environment.ProcessIdktóry powinien być preferowany, Process.GetCurrentProcess().Idponieważ pozwala uniknąć alokacji i konieczności pozbycia się obiektu Process.

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ pokazuje test porównawczy, w którym Environment.ProcessIdpobiera tylko 3ns zamiast 68ns z Process.GetCurrentProcess().Id.

ckuri
źródło