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 Thread.Priority

 

Publicado: octubre de 2016

Obtiene o establece un valor que indica la prioridad de programación de un subproceso.

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

public ThreadPriority Priority {
	get;
	[HostProtectionAttribute(SecurityAction.LinkDemand, SelfAffectingThreading = true)]
	set;
}

Valor de propiedad

Type: System.Threading.ThreadPriority

Uno de los valores de ThreadPriority. El valor predeterminado es ThreadPriority.Normal.

Exception Condition
ThreadStateException

El subproceso ha alcanzado un estado final, como Aborted.

ArgumentException

El valor especificado para un operación set no es un valor ThreadPriority válido.

Se puede asignar un subproceso cualquiera de la siguiente prioridad ThreadPriority valores:

  • Highest

  • AboveNormal

  • Normal

  • BelowNormal

  • Lowest

Sistemas operativos no tienen que respeta la prioridad de un subproceso.

En el ejemplo 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: