次の方法で共有


Process.PriorityClass プロパティ

定義

関連付けられているプロセスの全体的な優先度カテゴリを取得または設定します。

public:
 property System::Diagnostics::ProcessPriorityClass PriorityClass { System::Diagnostics::ProcessPriorityClass get(); void set(System::Diagnostics::ProcessPriorityClass value); };
public System.Diagnostics.ProcessPriorityClass PriorityClass { get; set; }
member this.PriorityClass : System.Diagnostics.ProcessPriorityClass with get, set
Public Property PriorityClass As ProcessPriorityClass

プロパティ値

関連付けられたプロセスの優先度カテゴリ。プロセスの BasePriority が計算されます。

例外

関連付けられているプロセス リソースからプロセス優先度情報を設定または取得できませんでした。

-又は-

プロセス識別子またはプロセス ハンドルは 0 です。 (プロセスは開始されていません。)

リモート コンピューターで実行されているプロセスの PriorityClass プロパティにアクセスしようとしています。 このプロパティは、ローカル コンピューターで実行されているプロセスでのみ使用できます。

プロセス Id は使用できません。

priority クラスは、 ProcessPriorityClass 列挙型で定義されている有効な値を使用しないため、設定できません。

次の例では、メモ帳のインスタンスを開始します。 次に、関連付けられているプロセスのさまざまなプロパティを取得して表示します。 この例では、プロセスがいつ終了するかを検出し、プロセスの終了コードを表示します。

using System;
using System.Diagnostics;

namespace ProcessSample
{
    class ProcessMonitorSample
    {
        public static void Main()
        {
            // Define variables to track the peak
            // memory usage of the process.
            long peakPagedMem   = 0,
                 peakWorkingSet = 0,
                 peakVirtualMem = 0;

            // Start the process.
            using (Process myProcess = Process.Start("NotePad.exe"))
            {
                // Display the process statistics until
                // the user closes the program.
                do
                {
                    if (!myProcess.HasExited)
                    {
                        // Refresh the current process property values.
                        myProcess.Refresh();

                        Console.WriteLine();

                        // Display current process statistics.

                        Console.WriteLine($"{myProcess} -");
                        Console.WriteLine("-------------------------------------");

                        Console.WriteLine($"  Physical memory usage     : {myProcess.WorkingSet64}");
                        Console.WriteLine($"  Base priority             : {myProcess.BasePriority}");
                        Console.WriteLine($"  Priority class            : {myProcess.PriorityClass}");
                        Console.WriteLine($"  User processor time       : {myProcess.UserProcessorTime}");
                        Console.WriteLine($"  Privileged processor time : {myProcess.PrivilegedProcessorTime}");
                        Console.WriteLine($"  Total processor time      : {myProcess.TotalProcessorTime}");
                        Console.WriteLine($"  Paged system memory size  : {myProcess.PagedSystemMemorySize64}");
                        Console.WriteLine($"  Paged memory size         : {myProcess.PagedMemorySize64}");

                        // Update the values for the overall peak memory statistics.
                        peakPagedMem   = myProcess.PeakPagedMemorySize64;
                        peakVirtualMem = myProcess.PeakVirtualMemorySize64;
                        peakWorkingSet = myProcess.PeakWorkingSet64;

                        if (myProcess.Responding)
                        {
                            Console.WriteLine("Status = Running");
                        }
                        else
                        {
                            Console.WriteLine("Status = Not Responding");
                        }
                    }
                }
                while (!myProcess.WaitForExit(1000));

                Console.WriteLine();
                Console.WriteLine($"  Process exit code          : {myProcess.ExitCode}");

                // Display peak memory statistics for the process.
                Console.WriteLine($"  Peak physical memory usage : {peakWorkingSet}");
                Console.WriteLine($"  Peak paged memory usage    : {peakPagedMem}");
                Console.WriteLine($"  Peak virtual memory usage  : {peakVirtualMem}");
            }
        }
    }
}
open System.Diagnostics

// Define variables to track the peak
// memory usage of the process.
let mutable peakPagedMem = 0L
let mutable peakWorkingSet = 0L
let mutable peakVirtualMem = 0L

// Start the process.
use myProcess = Process.Start "NotePad.exe"

// Display the process statistics until
// the user closes the program.
while myProcess.WaitForExit 1000 |> not do
    if not myProcess.HasExited then
        // Refresh the current process property values.
        myProcess.Refresh()

        printfn ""

        // Display current process statistics.

        printfn $"{myProcess} -"
        printfn "-------------------------------------"

        printfn $"  Physical memory usage     : {myProcess.WorkingSet64}"
        printfn $"  Base priority             : {myProcess.BasePriority}"
        printfn $"  Priority class            : {myProcess.PriorityClass}"
        printfn $"  User processor time       : {myProcess.UserProcessorTime}"
        printfn $"  Privileged processor time : {myProcess.PrivilegedProcessorTime}"
        printfn $"  Total processor time      : {myProcess.TotalProcessorTime}"
        printfn $"  Paged system memory size  : {myProcess.PagedSystemMemorySize64}"
        printfn $"  Paged memory size         : {myProcess.PagedMemorySize64}"

        // Update the values for the overall peak memory statistics.
        peakPagedMem <- myProcess.PeakPagedMemorySize64
        peakVirtualMem <- myProcess.PeakVirtualMemorySize64
        peakWorkingSet <- myProcess.PeakWorkingSet64

        if myProcess.Responding then
            printfn "Status = Running"
        else
            printfn "Status = Not Responding"

printfn ""
printfn $"  Process exit code          : {myProcess.ExitCode}"

// Display peak memory statistics for the process.
printfn $"  Peak physical memory usage : {peakWorkingSet}"
printfn $"  Peak paged memory usage    : {peakPagedMem}"
printfn $"  Peak virtual memory usage  : {peakVirtualMem}"
Imports System.Diagnostics

Namespace ProcessSample
    Class ProcessMonitorSample

        Public Shared Sub Main()

            ' Define variables to track the peak
            ' memory usage of the process.
            Dim peakPagedMem As Long = 0
            Dim peakWorkingSet As Long = 0
            Dim peakVirtualMem As Long = 0

            ' Start the process.
            Using myProcess = Process.Start("NotePad.exe")

                ' Display process statistics until
                ' the user closes the program.
                Do

                    If Not myProcess.HasExited Then

                        ' Refresh the current process property values.
                        myProcess.Refresh()

                        Console.WriteLine()

                        ' Display current process statistics.

                        Console.WriteLine($"{myProcess} -")
                        Console.WriteLine("-------------------------------------")

                        Console.WriteLine($"  Physical memory usage     : {myProcess.WorkingSet64}")
                        Console.WriteLine($"  Base priority             : {myProcess.BasePriority}")
                        Console.WriteLine($"  Priority class            : {myProcess.PriorityClass}")
                        Console.WriteLine($"  User processor time       : {myProcess.UserProcessorTime}")
                        Console.WriteLine($"  Privileged processor time : {myProcess.PrivilegedProcessorTime}")
                        Console.WriteLine($"  Total processor time      : {myProcess.TotalProcessorTime}")
                        Console.WriteLine($"  Paged system memory size  : {myProcess.PagedSystemMemorySize64}")
                        Console.WriteLine($"  Paged memory size         : {myProcess.PagedMemorySize64}")

                        ' Update the values for the overall peak memory statistics.
                        peakPagedMem = myProcess.PeakPagedMemorySize64
                        peakVirtualMem = myProcess.PeakVirtualMemorySize64
                        peakWorkingSet = myProcess.PeakWorkingSet64

                        If myProcess.Responding Then
                            Console.WriteLine("Status = Running")
                        Else
                            Console.WriteLine("Status = Not Responding")
                        End If
                    End If
                Loop While Not myProcess.WaitForExit(1000)

                Console.WriteLine()
                Console.WriteLine($"  Process exit code                         : {myProcess.ExitCode}")

                ' Display peak memory statistics for the process.
                Console.WriteLine($"  Peak physical memory usage of the process : {peakWorkingSet}")
                Console.WriteLine($"  Peak paged memory usage of the process    : {peakPagedMem}")
                Console.WriteLine($"  Peak virtual memory usage of the process  : {peakVirtualMem}")
            End Using
        End Sub
    End Class
End Namespace

注釈

このプロパティによって返される値は、プロセスの最後に更新された優先度を表します。 最新の優先順位を取得するには、まず Refresh() メソッドを呼び出す必要があります。

プロセス優先度クラスには、スレッドの優先順位レベルの範囲が含まれます。 プロセスで実行されている優先度が異なるスレッドは、プロセスの優先度クラスを基準にして実行されます。 Win32 では、クラスごとに 7 つの基本優先度レベルを持つ 4 つの優先度クラスが使用されます。 これらのプロセス優先度クラスは、 ProcessPriorityClass 列挙でキャプチャされます。これにより、プロセスの優先順位を IdleNormalHighAboveNormalBelowNormal、または RealTimeに設定できます。 経過時間またはその他のブーストに基づいて、プロセッサにアクセスするためにプロセスを他のプロセスよりも優先する必要がある場合に、オペレーティング システムによって基本優先度レベルを変更できます。 さらに、 PriorityBoostEnabled を設定して、待機状態から取り出されたスレッドの優先度レベルを一時的に高めることができます。 プロセスが待機状態に戻ると、優先度がリセットされます。

BasePriority プロパティを使用すると、プロセスに割り当てられている開始優先度を表示できます。 ただし、読み取り専用であるため、 BasePriority プロパティを使用してプロセスの優先順位を設定することはできません。 優先度を変更するには、プロセスの全体的な優先度カテゴリを取得または設定する PriorityClass プロパティを使用します。

優先度クラスは、システム モニターを使用して表示できません。 次の表に、 BasePriority 値と PriorityClass 値の関係を示します。

BasePriority PriorityClass
4 Idle
8 Normal
13 High
24 RealTime

適用対象

こちらもご覧ください