[.net] 현재 ProcessID를 얻는 방법은 무엇입니까?

.NET Framework를 사용하여 자신의 응용 프로그램에서 현재 프로세스 ID를 얻는 가장 간단한 방법은 무엇입니까?



답변

현재 프로세스에 대한 참조를 가져오고 System.DiagnosticsProcess.Id속성을 사용 합니다.

int nProcessID = Process.GetCurrentProcess().Id;


답변

Process.GetCurrentProcess().Id

또는 Process클래스가 IDisposable이고 애플리케이션이 실행되는 동안 프로세스 ID가 변경되지 않으므로 정적 속성이있는 도우미 클래스를 가질 수 있습니다.

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 는 할당과 Process 객체를 폐기 할 필요가 없기 때문에 Environment.ProcessId선호되어야하는 것을 소개 Process.GetCurrentProcess().Id합니다.

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/Environment.ProcessId.NET Framework에서 68ns 대신 3ns 만 사용 하는 벤치 마크를 보여줍니다 Process.GetCurrentProcess().Id.


답변