Який найпростіший спосіб отримати поточний ідентифікатор процесу у вашому власному додатку, використовуючи .NET Framework?
Відповіді:
Отримайте посилання на поточний процес та використовуйте властивість System.Diagnostics
' Process.Id
:
int nProcessID = Process.GetCurrentProcess().Id;
Process.GetCurrentProcess().Id
Або, оскільки Process
клас є IDisposable
, а ідентифікатор процесу не збирається змінюватись під час запуску програми, ви можете мати допоміжний клас зі статичною властивістю:
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;
Майбутній .NET 5 представляє, Environment.ProcessId
якому слід віддавати перевагу, Process.GetCurrentProcess().Id
оскільки він уникає розподілу та необхідності розподіляти об'єкт Process.
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ показує еталонний показник, де Environment.ProcessId
потрібно лише 3ns замість 68ns з Process.GetCurrentProcess().Id
.