Jaki jest najprostszy sposób uzyskania bieżącego identyfikatora procesu z własnej aplikacji przy użyciu platformy .NET Framework?
Odpowiedzi:
Odwołać się do bieżącego procesu i użycia System.Diagnostics
„s Process.Id
nieruchomości:
int nProcessID = Process.GetCurrentProcess().Id;
Process.GetCurrentProcess().Id
Lub, ponieważ Process
klasa 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;
Nadchodzący .NET 5 wprowadza, Environment.ProcessId
który powinien być preferowany, Process.GetCurrentProcess().Id
ponieważ 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.ProcessId
pobiera tylko 3ns zamiast 68ns z Process.GetCurrentProcess().Id
.