Process.PriorityClass Process.PriorityClass Process.PriorityClass Process.PriorityClass Property

Определение

Возвращает или задает общую категорию приоритета для процесса.Gets or sets the overall priority category for the associated process.

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.The priority category for the associated process, from which the BasePriority of the process is calculated.

Исключения

Не удается задать или получить сведения о приоритете процесса от связанного ресурса процесса.Process priority information could not be set or retrieved from the associated process resource.

- или --or-

Идентификатор процесса или дескриптор процесса равен нулю.The process identifier or process handle is zero. (Процесс не был запущен.)(The process has not been started.)

Вы пытаетесь получить доступ к свойству PriorityClass процесса, выполняющегося на удаленном компьютере.You are attempting to access the PriorityClass property for a process that is running on a remote computer. Это свойство доступно только для процессов, запущенных на локальном компьютере.This property is available only for processes that are running on the local computer.

Процесс Id недоступен.The process Id is not available.

Вы задали для класса PriorityClass значение AboveNormal или BelowNormal при использовании Windows 98 или Windows Millennium Edition (Windows Me).You have set the PriorityClass to AboveNormal or BelowNormal when using Windows 98 or Windows Millennium Edition (Windows Me). Эти платформы не поддерживают такие значения для класса приоритета.These platforms do not support those values for the priority class.

Невозможно задать класс приоритета, поскольку он не использует допустимое значение, как определено в перечислении ProcessPriorityClass.Priority class cannot be set because it does not use a valid value, as defined in the ProcessPriorityClass enumeration.

Примеры

В следующем примере запускается экземпляр блокнота.The following example starts an instance of Notepad. Затем в примере извлекаются и отображаются различные свойства связанного процесса.The example then retrieves and displays various properties of the associated process. В примере обнаруживается, когда процесс завершается, и отображается код завершения процесса.The example detects when the process exits, and displays the process's exit code.

#using <system.dll>

using namespace System;
using namespace System::Diagnostics;
int main()
{
   
   // Define variables to track the peak
   // memory usage of the process.
   _int64 peakPagedMem = 0,peakWorkingSet = 0,peakVirtualMem = 0;
   Process^ myProcess = nullptr;
   try
   {
      
      // Start the 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( "{0} -", myProcess );
            Console::WriteLine( "-------------------------------------" );
            Console::WriteLine( "  physical memory usage: {0}", myProcess->WorkingSet64 );
            Console::WriteLine( "  base priority: {0}", myProcess->BasePriority );
            Console::WriteLine( "  priority class: {0}", myProcess->PriorityClass );
            Console::WriteLine( "  user processor time: {0}", myProcess->UserProcessorTime );
            Console::WriteLine( "  privileged processor time: {0}", myProcess->PrivilegedProcessorTime );
            Console::WriteLine( "  total processor time: {0}", myProcess->TotalProcessorTime );
			Console::WriteLine("  PagedSystemMemorySize64: {0}", myProcess->PagedSystemMemorySize64);
            Console::WriteLine("  PagedMemorySize64: {0}", 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: {0}", myProcess->ExitCode );
      
      // Display peak memory statistics for the process.
      Console::WriteLine( "Peak physical memory usage of the process: {0}", peakWorkingSet );
      Console::WriteLine( "Peak paged memory usage of the process: {0}", peakPagedMem );
      Console::WriteLine( "Peak virtual memory usage of the process: {0}", peakVirtualMem );
   }
   finally
   {
      if ( myProcess != nullptr )
      {
         myProcess->Close();
      }
   }

}
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}");
            }
        }
    }
}
Imports System
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 'Main
    End Class
End Namespace

Комментарии

Класс приоритета процесса охватывает диапазон уровней приоритета потока.A process priority class encompasses a range of thread priority levels. Потоки с разными приоритетами, которые выполняются в процессе, выполняются относительно класса приоритета процесса.Threads with different priorities that are running in the process run relative to the priority class of the process. Win32 использует четыре класса приоритета с семью базовыми уровнями приоритета на класс.Win32 uses four priority classes with seven base priority levels per class. Эти классы приоритетов процессов фиксируются в ProcessPriorityClass перечислении, которое позволяет задать Idleприоритет процесса, Normal, High, AboveNormal BelowNormal, или RealTime.These process priority classes are captured in the ProcessPriorityClass enumeration, which lets you set the process priority to Idle, Normal, High, AboveNormal, BelowNormal, or RealTime. В зависимости от затраченного времени или других увеличений базовый уровень приоритета может быть изменен операционной системой, когда процесс должен быть помещается впереди других для доступа к процессору.Based on the time elapsed or other boosts, the base priority level can be changed by the operating system when a process needs to be put ahead of others for access to the processor. Кроме того, можно задать, PriorityBoostEnabled чтобы временно увеличить уровень приоритета потоков, выданных из состояния ожидания.In addition, you can set the PriorityBoostEnabled to temporarily boost the priority level of threads that have been taken out of the wait state. Приоритет сбрасывается, когда процесс возвращается в состояние ожидания.The priority is reset when the process returns to the wait state.

BasePriority Свойство позволяет просмотреть приоритет запуска, назначенный процессу.The BasePriority property lets you view the starting priority that is assigned to a process. Однако, так как он доступен только для чтения, нельзя использовать BasePriority свойство для задания приоритета процесса.However, because it is read-only, you cannot use the BasePriority property to set the priority of a process. Чтобы изменить приоритет, используйте PriorityClass свойство, которое получает или задает общую категорию приоритета для процесса.To change the priority, use the PriorityClass property, which gets or sets the overall priority category for the process.

Класс приоритета нельзя просмотреть с помощью системного монитора.The priority class cannot be viewed using System Monitor. В следующей таблице показана связь между BasePriority значениями и. PriorityClassThe following table shows the relationship between the BasePriority and PriorityClass values.

басеприоритиBasePriority PriorityClass значениеPriorityClass
44 Idle
88 Normal
1313 High
2424 RealTime

Безопасность

LinkDemand
для полного доверия для немедленного вызывающего объекта.for full trust for the immediate caller. Этот член не может быть использован частично доверенным кодом.This member cannot be used by partially trusted code.

Применяется к

Дополнительно