Process.PriorityClass Propriedade

Definição

Obtém ou define a categoria geral de prioridade para o processo associado.

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

Valor da propriedade

A categoria de prioridade do processo associado, do qual o BasePriority do processo é calculado.

Exceções

As informações de prioridade do processo não puderam ser definidas nem recuperadas do recurso do processo associado.

- ou -

O identificador de processo é zero. (O processo não foi iniciado.)

Você está tentando acessar a propriedade PriorityClass para um processo que está sendo executado em um computador remoto. Essa propriedade está disponível somente para processos em execução no computador local.

O processo Id não está disponível.

A classe de prioridade não pode ser definida porque ela não usa um valor válido, conforme definido na enumeração ProcessPriorityClass.

Exemplos

O exemplo a seguir inicia uma instância do Bloco de Notas. Em seguida, o exemplo recupera e exibe várias propriedades do processo associado. O exemplo detecta quando o processo é encerrado e exibe o código de saída do processo.

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

Comentários

O valor retornado por essa propriedade representa a prioridade atualizada mais recentemente do processo. Para obter a prioridade mais atualizada, você precisa chamar Refresh() o método primeiro.

Uma classe de prioridade de processo abrange uma variedade de níveis de prioridade de thread. Threads com prioridades diferentes que estão em execução no processo são executados em relação à classe de prioridade do processo. O Win32 usa quatro classes de prioridade com sete níveis de prioridade base por classe. Essas classes de prioridade de processo são capturadas na ProcessPriorityClass enumeração , que permite definir a prioridade do processo como Idle, Normal, High, AboveNormal, BelowNormalou RealTime. Com base no tempo decorrido ou em outros aumentos, o nível de prioridade base pode ser alterado pelo sistema operacional quando um processo precisa ser colocado à frente de outros para acessar o processador. Além disso, você pode definir o PriorityBoostEnabled para aumentar temporariamente o nível de prioridade dos threads que foram retirados do estado de espera. A prioridade é redefinida quando o processo retorna ao estado de espera.

A BasePriority propriedade permite exibir a prioridade inicial atribuída a um processo. No entanto, como ela é somente leitura, você não pode usar a BasePriority propriedade para definir a prioridade de um processo. Para alterar a prioridade, use a PriorityClass propriedade , que obtém ou define a categoria de prioridade geral para o processo.

A classe de prioridade não pode ser exibida usando o Monitor do Sistema. A tabela a seguir mostra a relação entre os BasePriority valores e PriorityClass .

Basepriority Priorityclass
4 Idle
8 Normal
13 High
24 RealTime

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Confira também