Який найпростіший спосіб отримати поточний ідентифікатор процесу у вашому власному додатку, використовуючи .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.