Як отримати поточний ProcessID?


83

Який найпростіший спосіб отримати поточний ідентифікатор процесу у вашому власному додатку, використовуючи .NET Framework?


2
Правда. Думаю, тут щось пішло не так: D @VictorYarema
Деніз

Відповіді:


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потрібно лише 3ns замість 68ns з Process.GetCurrentProcess().Id.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.