如何获取当前的ProcessID?

发布于 2024-09-04 20:25:43 字数 55 浏览 3 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

养猫人 2024-09-11 20:25:43

获取对当前进程的引用并使用 System.Diagnostics 的 Process.Id 属性:

int nProcessID = System.Diagnostics.Process.GetCurrentProcess().Id;

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

int nProcessID = System.Diagnostics.Process.GetCurrentProcess().Id;
桃酥萝莉 2024-09-11 20:25:43

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

https://devblogs.microsoft.com/dotnet/performance-improvements- in-net-5/ 显示了一个基准测试,其中 Environment.ProcessId 只需 3 纳秒,而使用 Process.GetCurrentProcess().Id 则需要 68 纳秒。

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.

云淡风轻 2024-09-11 20:25:43
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;
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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文