using System.Diagnostics; lub System.Diagnostics.Process.GetCurrentProcess (). Id; Zawsze chronię się i zakładam, że obecne lub przyszłe reguły polityki ograniczą to połączenie w pewnym trybie zablokowanym lub restrykcyjnym, ponieważ ma dostęp do obszarów procesu.
Sql Surfer
17
Process.GetCurrentProcess().Id
Lub, ponieważ Processklasa jest IDisposable, a identyfikator procesu nie zmieni się podczas działania aplikacji, możesz mieć klasę pomocniczą z właściwością statyczną:
Nadchodzący .NET 5 wprowadza, Environment.ProcessIdktóry powinien być preferowany, Process.GetCurrentProcess().Idponieważ pozwala uniknąć alokacji i konieczności pozbycia się obiektu Process.
Odpowiedzi:
Odwołać się do bieżącego procesu i użycia
System.Diagnostics
„sProcess.Id
nieruchomości:int nProcessID = Process.GetCurrentProcess().Id;
źródło
Process.GetCurrentProcess().Id
Lub, ponieważ
Process
klasa jestIDisposable
, a identyfikator procesu nie zmieni się podczas działania aplikacji, możesz mieć klasę pomocniczą z właściwością statyczną: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;
źródło
Nadchodzący .NET 5 wprowadza,
Environment.ProcessId
który powinien być preferowany,Process.GetCurrentProcess().Id
ponieważ pozwala uniknąć alokacji i konieczności pozbycia się obiektu Process.https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ pokazuje test porównawczy, w którym
Environment.ProcessId
pobiera tylko 3ns zamiast 68ns zProcess.GetCurrentProcess().Id
.źródło