Esta documentación está archivada y no tiene mantenimiento.

Process.PriorityClass (Propiedad)

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

Espacio de nombres: System.Diagnostics
Ensamblado: System (en system.dll)

public ProcessPriorityClass PriorityClass { get; set; }
/** @property */
public ProcessPriorityClass get_PriorityClass ()

/** @property */
public void set_PriorityClass (ProcessPriorityClass value)

public function get PriorityClass () : ProcessPriorityClass

public function set PriorityClass (value : ProcessPriorityClass)

Valor de propiedad

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

Tipo de excepciónCondición

Win32Exception

No se pudo establecer o recuperar la información de prioridad del proceso desde el recurso del proceso asociado.

O bien

El identificador del proceso es cero. (El proceso no se ha iniciado)

SystemException

Se está intentando obtener acceso a la propiedad PriorityClass de un proceso que se está ejecutando en un equipo remoto. La propiedad sólo está disponible para los procesos que se ejecutan en el equipo local.

O bien

La propiedad Id del proceso no estaba disponible.

PlatformNotSupportedException

Se ha establecido el valor de PriorityClass en AboveNormal o BelowNormal al utilizar Windows 98 o Windows Millennium (Windows Me). Estas plataformas no admiten esos valores para la clase de prioridad.

Una clase de prioridad de proceso engloba a una variedad de niveles de prioridad de subproceso. Los subprocesos con prioridades distintas que se ejecutan en el proceso, se ejecutan con respecto a 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 procesos se capturan en la enumeración ProcessPriorityClass, que permite establecer la prioridad del proceso en Idle, Normal, High, High, BelowNormal o RealTime. En función del tiempo transcurrido o de otro tipo de estímulo, el sistema operativo puede cambiar el nivel de prioridad base cuando un proceso necesita situarse por delante de otros para obtener acceso al procesador. Además, puede establecerse la propiedad PriorityBoostEnabled para aumentar temporalmente el nivel de prioridad de los subprocesos que se han sacado del estado de espera. La prioridad se restablece cuando el proceso regresa al estado de espera.

La propiedad BasePriority permite ver la prioridad inicial asignada a un proceso. No obstante, la propiedad BasePriority, por ser de sólo lectura, no se puede utilizar para establecer la prioridad de un proceso. Para cambiar la prioridad, utilice la propiedad PriorityClass, que obtiene o establece la categoría de prioridad general del proceso.

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

BasePriority

PriorityClass

4

Idle

8

Normal

13

High

24

RealTime

Nota de la plataforma Windows 98, Windows Millennium: Si la clase de prioridad se establece en AboveNormal o BelowNormal, se produce una excepción.

En el siguiente ejemplo se inicia una instancia del Bloc de notas. A continuación, se recuperan y se muestran diversas propiedades del proceso asociado. También se detecta cuándo termina el proceso y se muestra el código de salida del proceso.

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;

            Process myProcess = null;

            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.ToString());
                        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);

                        // 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 != null)
                {
                    myProcess.Close();
                }
            }
        }

    }
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0
Mostrar: