¿Cómo obtener el ProcessID actual?

83

¿Cuál es la forma más sencilla de obtener el ID del proceso actual desde su propia aplicación, utilizando .NET Framework?

plaureano
fuente
2
Cierto. Supongo que algo salió mal aquí: D @VictorYarema
Deniz

Respuestas:

121

Obtenga una referencia al proceso actual y use System.Diagnosticsla Process.Idpropiedad:

int nProcessID = Process.GetCurrentProcess().Id;
luvieere
fuente
2
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:

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;
Joe
fuente
7

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.

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ muestra un punto de referencia donde Environment.ProcessIdsolo toma 3ns en lugar de 68ns con Process.GetCurrentProcess().Id.

ckuri
fuente