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


83

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


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

Ответы:


121

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

int nProcessID = Process.GetCurrentProcess().Id;

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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.