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.Idnieruchomości:
int nProcessID = Process.GetCurrentProcess().Id;
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;
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.