Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Process.PriorityClass

 

Publicado: octubre de 2016

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

Valor de propiedad

Type: System.Diagnostics.ProcessPriorityClass

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

Exception Condition
Win32Exception

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).

NotSupportedException

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.

InvalidOperationException

El proceso Id no está disponible.

PlatformNotSupportedException

Ha establecido la PriorityClass en AboveNormal o BelowNormal al usar Windows 98 o Windows Millennium Edition (Windows Me). Estas plataformas no admiten esos valores para la clase de prioridad.

InvalidEnumArgumentException

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

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 uses four priority classes with seven base priority levels per class. These process priority classes are captured in the T:System.Diagnostics.ProcessPriorityClass enumeration, which lets you set the process priority to F:System.Diagnostics.ProcessPriorityClass.Idle, F:System.Diagnostics.ProcessPriorityClass.Normal, F:System.Diagnostics.ProcessPriorityClass.High, F:System.Diagnostics.ProcessPriorityClass.AboveNormal, F:System.Diagnostics.ProcessPriorityClass.BelowNormal, or F:System.Diagnostics.ProcessPriorityClass.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. In addition, you can set the P:System.Diagnostics.Process.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.

The P:System.Diagnostics.Process.BasePriority property lets you view the starting priority that is assigned to a process. However, because it is read-only, you cannot use the P:System.Diagnostics.Process.BasePriority property to set the priority of a process. To change the priority, use the P:System.Diagnostics.Process.PriorityClass property, which gets or sets the overall priority category for the process.

The priority class cannot be viewed using System Monitor. The following table shows the relationship between the P:System.Diagnostics.Process.BasePriority and P:System.Diagnostics.Process.PriorityClass values.

BasePriority

PriorityClass

4

Idle

8

Normal

13

High

24

RealTime

Win98WinMe

Setting the priority class to F:System.Diagnostics.ProcessPriorityClass.AboveNormal or F:System.Diagnostics.ProcessPriorityClass.BelowNormal causes an exception to be thrown.

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

    }
}

LinkDemand

for full trust for the immediate caller. This member cannot be used by partially trusted code.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: