現在のProcessIDを取得するにはどうすればよいですか?


83

.NET Frameworkを使用して、独自のアプリケーション内から現在のプロセスIDを取得する最も簡単な方法は何ですか?


2
本当。ここで何か問題が発生したと思います:D @VictorYarema
Deniz

回答:


121

現在のプロセスへの参照を取得し、System.DiagnosticsProcess.Idプロパティを使用します。

int nProcessID = Process.GetCurrentProcess().Id;

2
System.Diagnosticsを使用します。またはSystem.Diagnostics.Process.GetCurrentProcess()。Id; 私は常に自分自身を保護し、現在または将来のポリシールールにより、プロセス領域にアクセスするため、この呼び出しがロックダウンモードまたは制限モードで制限されると想定しています。
SQL Surfer

17
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;

7

今後の.NET5では、割り当てやProcessオブジェクトを破棄する必要がないため、Environment.ProcessIdどちらを優先する必要があるかが導入されていProcess.GetCurrentProcess().Idます。

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/は、Environment.ProcessId68nsではなく3nsしかかからないベンチマークを示していますProcess.GetCurrentProcess().Id

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.