Partager via


Process.PriorityClass Propriété

Définition

Obtient ou définit la catégorie de priorité globale pour le processus associé.

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

Valeur de propriété

Catégorie de priorité pour le processus associé, à partir de laquelle le BasePriority processus est calculé.

Exceptions

Les informations de priorité du processus n’ont pas pu être définies ou récupérées à partir de la ressource de processus associée.

- ou -

L’identificateur de processus ou le handle de processus est égal à zéro. (Le processus n’a pas été démarré.)

Vous tentez d’accéder à la PriorityClass propriété pour un processus en cours d’exécution sur un ordinateur distant. Cette propriété est disponible uniquement pour les processus qui s’exécutent sur l’ordinateur local.

Le processus Id n’est pas disponible.

La classe Priority ne peut pas être définie, car elle n’utilise pas de valeur valide, telle que définie dans l’énumération ProcessPriorityClass .

Exemples

L’exemple suivant démarre une instance du Bloc-notes. L’exemple récupère et affiche ensuite différentes propriétés du processus associé. L’exemple détecte quand le processus se termine et affiche le code de sortie du processus.

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

Remarques

La valeur retournée par cette propriété représente la priorité actualisée la plus récente du processus. Pour obtenir la priorité la plus récente, vous devez d’abord appeler Refresh() la méthode.

Une classe de priorité de processus englobe une plage de niveaux de priorité de thread. Threads avec différentes priorités qui s’exécutent dans le processus s’exécutent par rapport à la classe de priorité du processus. Win32 utilise quatre classes de priorité avec sept niveaux de priorité de base par classe. Ces classes de priorité de processus sont capturées dans l’énumérationProcessPriorityClass, ce qui vous permet de définir la priorité du processus sur Idle, , Normal, High, AboveNormalou BelowNormalRealTime. En fonction du temps écoulé ou d’autres améliorations, le niveau de priorité de base peut être modifié par le système d’exploitation lorsqu’un processus doit être mis à l’avance par d’autres personnes pour l’accès au processeur. En outre, vous pouvez définir la PriorityBoostEnabled valeur pour augmenter temporairement le niveau de priorité des threads qui ont été retirés de l’état d’attente. La priorité est réinitialisée lorsque le processus retourne à l’état d’attente.

La BasePriority propriété vous permet d’afficher la priorité de départ affectée à un processus. Toutefois, étant donné qu’il est en lecture seule, vous ne pouvez pas utiliser la BasePriority propriété pour définir la priorité d’un processus. Pour modifier la priorité, utilisez la PriorityClass propriété, qui obtient ou définit la catégorie de priorité globale pour le processus.

Impossible d’afficher la classe de priorité à l’aide du Moniteur système. Le tableau suivant montre la relation entre les valeurs et PriorityClass les BasePriority valeurs.

BasePriority PriorityClass
4 Idle
8 Normal
13 High
Vingt-quatre RealTime

S’applique à

Voir aussi