Leer en inglés

Compartir a través de


Process.PriorityClass Propiedad

Definición

Obtiene o establece la categoría de prioridad general del proceso asociado.

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

Valor de propiedad

Categoría de prioridad del proceso asociado a partir de la cual se calcula el BasePriority del proceso.

Excepciones

La información de la prioridad del proceso no pudo establecerse o recuperarse del recurso del proceso asociado.

o bien

El identificador del proceso o el controlador del proceso es cero. (No se ha iniciado el proceso).

Está intentando obtener acceso a la propiedad PriorityClass de un proceso que se ejecuta en un equipo remoto. Esta propiedad está disponible únicamente para los procesos que se ejecutan en el equipo local.

El proceso Id no está disponible.

No se puede establecer la clase de prioridad porque no usa un valor válido, según se define en la enumeración ProcessPriorityClass.

Ejemplos

En el ejemplo siguiente se inicia una instancia del Bloc de notas. A continuación, el ejemplo recupera y muestra varias propiedades del proceso asociado. En el ejemplo se detecta cuándo se cierra el proceso y se muestra el código de salida del proceso.

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

Comentarios

El valor devuelto por esta propiedad representa la prioridad actualizada más recientemente del proceso. Para obtener la prioridad más actualizada, primero debe llamar Refresh() al método .

Una clase de prioridad de proceso abarca un intervalo de niveles de prioridad de subproceso. Subprocesos con diferentes prioridades que se ejecutan en la ejecución del proceso en relación con la clase de prioridad del proceso. Win32 usa cuatro clases de prioridad con siete niveles de prioridad base por clase. Estas clases de prioridad de proceso se capturan en la ProcessPriorityClass enumeración , que permite establecer la prioridad Idledel proceso en , Normal, High, AboveNormal, BelowNormalo RealTime. En función del tiempo transcurrido u otros aumentos, el sistema operativo puede cambiar el nivel de prioridad base cuando un proceso debe ponerse por delante de otros para acceder al procesador. Además, puede establecer para PriorityBoostEnabled aumentar temporalmente el nivel de prioridad de los subprocesos que se han quitado del estado de espera. La prioridad se restablece cuando el proceso vuelve al estado de espera.

La BasePriority propiedad permite ver la prioridad inicial asignada a un proceso. Sin embargo, dado que es de solo lectura, no se puede usar la BasePriority propiedad para establecer la prioridad de un proceso. Para cambiar la prioridad, use la PriorityClass propiedad , que obtiene o establece la categoría de prioridad general para el proceso.

La clase de prioridad no se puede ver mediante el Monitor del sistema. En la tabla siguiente se muestra la relación entre los BasePriority valores y PriorityClass .

BasePriority PriorityClass
4 Idle
8 Normal
13 High
24 RealTime

Se aplica a

Producto Versiones
.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

Consulte también