utilizando System.Diagnostics; o System.Diagnostics.Process.GetCurrentProcess (). Id; Siempre me protejo y asumo que las reglas de política actuales o futuras restringirán esta llamada en algún modo bloqueado o restrictivo porque accede a las áreas de proceso.
Sql Surfer
17
Process.GetCurrentProcess().Id
O, dado que la Processclase sí lo es IDisposable, y el ID de proceso no va a cambiar mientras se ejecuta la aplicación, podría tener una clase auxiliar con una propiedad estática:
El próximo .NET 5 presenta Environment.ProcessIdcuál debería preferirse, Process.GetCurrentProcess().Idya que evita asignaciones y la necesidad de eliminar el objeto de proceso.
Respuestas:
Obtenga una referencia al proceso actual y use
System.Diagnostics
laProcess.Id
propiedad:int nProcessID = Process.GetCurrentProcess().Id;
fuente
Process.GetCurrentProcess().Id
O, dado que la
Process
clase sí lo esIDisposable
, y el ID de proceso no va a cambiar mientras se ejecuta la aplicación, podría tener una clase auxiliar con una propiedad estática: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;
fuente
El próximo .NET 5 presenta
Environment.ProcessId
cuál debería preferirse,Process.GetCurrentProcess().Id
ya que evita asignaciones y la necesidad de eliminar el objeto de proceso.https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ muestra un punto de referencia donde
Environment.ProcessId
solo toma 3ns en lugar de 68ns conProcess.GetCurrentProcess().Id
.fuente