с помощью System.Diagnostics; или System.Diagnostics.Process.GetCurrentProcess (). Id; Я всегда защищаю себя и предполагаю, что текущие или будущие правила политики будут ограничивать этот вызов в каком-то заблокированном или ограничивающем режиме, поскольку он обращается к областям процессов.
Sql Surfer
17
Process.GetCurrentProcess().Id
Или, поскольку Processкласс есть IDisposable, а идентификатор процесса не изменится во время работы вашего приложения, у вас может быть вспомогательный класс со статическим свойством:
Предстоящий .NET 5 представляет то, Environment.ProcessIdчто следует предпочесть, Process.GetCurrentProcess().Idпоскольку он позволяет избежать выделения памяти и необходимости удалять объект Process.
Ответы:
Получить ссылку на текущий процесс и использование
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
.источник