Process.PriorityClass Vlastnost

Definice

Získá nebo nastaví celkovou prioritu kategorie přidruženého procesu.

public System.Diagnostics.ProcessPriorityClass PriorityClass { get; set; }

Hodnota vlastnosti

Kategorie priority přidruženého procesu, ze které se BasePriority vypočítá hodnota procesu.

Výjimky

Informace o prioritě procesu nelze nastavit nebo načíst z přidruženého prostředku procesu.

-nebo-

Identifikátor procesu nebo popisovač procesu je nula. (Proces nebyl spuštěn.)

Pokoušíte se získat přístup PriorityClass k vlastnosti pro proces, který je spuštěn na vzdáleném počítači. Tato vlastnost je k dispozici pouze pro procesy spuštěné v místním počítači.

Tento proces Id není k dispozici.

Třídu priority nelze nastavit, protože nepoužívá platnou hodnotu definovanou ve výčtu ProcessPriorityClass .

Příklady

Následující příklad spustí instanci Poznámkového bloku. Příklad pak načte a zobrazí různé vlastnosti přidruženého procesu. Příklad zjistí, kdy se proces ukončí, a zobrazí ukončovací kód procesu.

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}");
            }
        }
    }
}

Poznámky

Hodnota vrácená touto vlastností představuje naposledy obnovenou prioritu procesu. Abyste získali nejaktuálnější prioritu, musíte nejprve volat Refresh() metodu.

Třída priority procesu zahrnuje řadu úrovní priority vlákna. Vlákna s různými prioritami, které jsou spuštěny v procesu, běží vzhledem k třídě priority procesu. Win32 používá čtyři prioritní třídy se sedmi základními úrovněmi priority na třídu. Tyto třídy priority procesu jsou zachyceny ve výčtu ProcessPriorityClass , který umožňuje nastavit prioritu procesu na Idle, Normal, High, AboveNormal, BelowNormalnebo RealTime. V závislosti na uplynulé době nebo jiných zvýšeních může operační systém změnit úroveň základní priority, když je potřeba předběhl proces před ostatními, aby byl přístup k procesoru. Kromě toho můžete nastavit PriorityBoostEnabled , aby se dočasně zvýšila úroveň priority vláken, která byla odebrána ze stavu čekání. Priorita se resetuje, když se proces vrátí do stavu čekání.

Vlastnost BasePriority umožňuje zobrazit počáteční prioritu přiřazenou procesu. Vzhledem k tomu, že je ale jen pro čtení, nelze použít BasePriority vlastnost k nastavení priority procesu. Pokud chcete změnit prioritu, použijte PriorityClass vlastnost, která získá nebo nastaví celkovou kategorii priority pro proces.

Třídu priority nelze zobrazit pomocí nástroje Sledování systému. Následující tabulka ukazuje relaci mezi BasePriority hodnotami a PriorityClass .

BasePriority Třída PriorityClass
4 Idle
8 Normal
13 High
24 RealTime

Platí pro

Viz také