Какой самый простой способ получить текущий идентификатор процесса из вашего собственного приложения с помощью .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
требуется всего 3 нс вместо 68 нс с Process.GetCurrentProcess().Id
.