How to get the current ProcessID?

后端 未结 3 1418
囚心锁ツ
囚心锁ツ 2020-12-02 22:10

What\'s the simplest way to obtain the current process ID from within your own application, using the .NET Framework?

相关标签:
3条回答
  • 2020-12-02 22:30

    The upcoming .NET 5 introduces Environment.ProcessId which should be preferred over Process.GetCurrentProcess().Id as it avoids allocations and the need to dispose the Process object.

    https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ shows a benchmark where Environment.ProcessId only takes 3ns instead of 68ns with Process.GetCurrentProcess().Id.

    0 讨论(0)
  • 2020-12-02 22:37

    Get a reference to the current process and use System.Diagnostics's Process.Id property:

    int nProcessID = Process.GetCurrentProcess().Id;
    
    0 讨论(0)
  • 2020-12-02 22:50
    Process.GetCurrentProcess().Id
    

    Or, since the Process class is IDisposable, and the Process ID isn't going to change while your application's running, you could have a helper class with a static property:

    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;
    
    0 讨论(0)
提交回复
热议问题