Как получить текущий ProcessID?

83

Какой самый простой способ получить текущий идентификатор процесса из вашего собственного приложения с помощью .NET Framework?

Plaureano
источник
2
Правда. Я думаю, что здесь что-то пошло не так: D @VictorYarema
Deniz

Ответы:

121

Получить ссылку на текущий процесс и использование System.Diagnostics«ы Process.Idсобственности:

int nProcessID = Process.GetCurrentProcess().Id;
Luvieere
источник
2
с помощью System.Diagnostics; или System.Diagnostics.Process.GetCurrentProcess (). Id; Я всегда защищаю себя и предполагаю, что текущие или будущие правила политики будут ограничивать этот вызов в каком-то заблокированном или ограничивающем режиме, поскольку он обращается к областям процессов.
Sql Surfer
17
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;
Джо
источник
7

Предстоящий .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.

ckuri
источник