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

Enumeración ThreadPriority

 

Publicado: noviembre de 2016

Especifica la prioridad de programación de un Thread.

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum ThreadPriority

Nombre de miembroDescripción
AboveNormal

La Thread puede programarse después de los subprocesos con Highest prioridad y antes de aquellos con Normal prioridad.

BelowNormal

La Thread puede programarse después de los subprocesos con Normal prioridad y antes de aquellos con Lowest prioridad.

Highest

La Thread puede programarse antes que los subprocesos con cualquier otra prioridad.

Lowest

La Thread puede programarse después de los subprocesos con cualquier otra prioridad.

Normal

La Thread puede programarse después de los subprocesos con AboveNormal prioridad y antes de aquellos con BelowNormal prioridad. Los subprocesos tienen Normal prioridad predeterminada.

ThreadPriority define el conjunto de todos los valores posibles para la prioridad de un subproceso. Prioridades de subprocesos de especifican la prioridad relativa de un subproceso frente a otro.

Cada subproceso tiene asignada una prioridad. Los subprocesos creados en el tiempo de ejecución tienen asignados inicialmente la Normal prioridad, mientras que los subprocesos creados fuera del tiempo de ejecución conservan su prioridad anterior cuando entran en el tiempo de ejecución. Puede obtener y establecer la prioridad de un subproceso mediante el acceso a su Priority propiedad.

Subprocesos están programados para ejecución según su prioridad. El algoritmo de programación que se utiliza para determinar el orden de ejecución de subprocesos varía en función de cada sistema operativo. El sistema operativo también puede ajustar la prioridad del subproceso dinámicamente cuando se mueve el foco de la interfaz de usuario entre el primer plano y el fondo.

La prioridad de un subproceso no afecta al estado del subproceso; el estado del subproceso debe ser Running antes de que el sistema operativo puede programarlo.

En el ejemplo de código siguiente se muestra el resultado de cambiar la prioridad de un subproceso. Se crean tres subprocesos, la prioridad de un subproceso se establece en ThreadPriority.BelowNormal, y se establece la prioridad de un segundo en ThreadPriority.AboveNormal. Cada subproceso incrementa una variable en un while bucle y se ejecuta durante un tiempo establecido.

using System;
using System.Threading;
using Timers = System.Timers;

class Test
{
    static void Main()
    {
        PriorityTest priorityTest = new PriorityTest();

        Thread thread1 = new Thread(priorityTest.ThreadMethod);
        thread1.Name = "ThreadOne";
        Thread thread2 = new Thread(priorityTest.ThreadMethod);
        thread2.Name = "ThreadTwo";
        thread2.Priority = ThreadPriority.BelowNormal;
        Thread thread3 = new Thread(priorityTest.ThreadMethod);
        thread3.Name = "ThreadThree";
        thread3.Priority = ThreadPriority.AboveNormal;

        thread1.Start();
        thread2.Start();
        thread3.Start();
        // Allow counting for 10 seconds.
        Thread.Sleep(10000);
        priorityTest.LoopSwitch = false;
    }
}

class PriorityTest
{
    static bool loopSwitch;
    [ThreadStatic] static long threadCount = 0;

    public PriorityTest()
    {
        loopSwitch = true;
    }

    public bool LoopSwitch
    {
        set{ loopSwitch = value; }
    }

    public void ThreadMethod()
    {
        while(loopSwitch)
        {
            threadCount++;
        }
        Console.WriteLine("{0,-11} with {1,11} priority " +
            "has a count = {2,13}", Thread.CurrentThread.Name, 
            Thread.CurrentThread.Priority.ToString(), 
            threadCount.ToString("N0")); 
    }
}
// The example displays output like the following:
//    ThreadOne   with      Normal priority has a count =   755,897,581
//    ThreadThree with AboveNormal priority has a count =   778,099,094
//    ThreadTwo   with BelowNormal priority has a count =     7,840,984

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: