如何获取当前的ProcessID?

pla*_*ano 67 .net process

使用.NET Framework从您自己的应用程序中获取当前进程ID的最简单方法是什么?

luv*_*ere 105

获取到当前进程的参考和使用System.DiagnosticsProcess.Id属性:

int nProcessID = Process.GetCurrentProcess().Id;
Run Code Online (Sandbox Code Playgroud)

  • 使用System.Diagnostics; 或System.Diagnostics.Process.GetCurrentProcess().Id; 我总是保护自己并假设当前或未来的策略规则会在某些锁定或限制模式下限制此调用,因为它访问进程区域. (2认同)

cku*_*uri 12

即将推出的 .NET 5 引入了Environment.ProcessId哪个应该优先考虑,Process.GetCurrentProcess().Id因为它避免了分配和处理 Process 对象的需要。

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/显示了一个基准,其中Environment.ProcessId只需要为3ns,而不是68ns用Process.GetCurrentProcess().Id

  • @BVernon 保存的 65 还不是全部。您还应该处置 Process 实例。Process 实例还运行一个需要额外 (GC) 时间的终结器,并且每个 Process 实例都有(少量)内存占用。[最初的意图](https://github.com/dotnet/runtime/issues/38388) 是为了改进日志记录,您通常还会记录每个日志消息的进程 ID,以区分日志源,以防您的日志记录接收器接收来自不同进程的日志。如果您有相同的非常细粒度的日志记录,您不希望每次都创建一个可终结的对象。 (4认同)

Joe*_*Joe 9

Process.GetCurrentProcess().Id
Run Code Online (Sandbox Code Playgroud)