¿Cuál es la forma más sencilla de obtener el ID del proceso actual desde su propia aplicación, utilizando .NET Framework?
Respuestas:
Obtenga una referencia al proceso actual y use System.Diagnostics
la Process.Id
propiedad:
int nProcessID = Process.GetCurrentProcess().Id;
Process.GetCurrentProcess().Id
O, dado que la Process
clase 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:
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;
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 con Process.GetCurrentProcess().Id
.