【发布时间】:2011-03-01 13:04:40
【问题描述】:
使用 .NET Framework 从您自己的应用程序中获取当前进程 ID 的最简单方法是什么?
【问题讨论】:
-
是的。我想这里出了点问题:D @VictorYarema
使用 .NET Framework 从您自己的应用程序中获取当前进程 ID 的最简单方法是什么?
【问题讨论】:
获取当前进程的引用并使用System.Diagnostics的Process.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 引入了 Environment.ProcessId,应该优先于 Process.GetCurrentProcess().Id,因为它避免了分配和释放 Process 对象的需要。
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/ 显示了一个基准,其中Environment.ProcessId 只需要 3ns 而不是 Process.GetCurrentProcess().Id 的 68ns。
【讨论】: