ThreadPriority Enumeración

Definición

Especifica la prioridad de programación de Thread.Specifies the scheduling priority of a Thread.

public enum class ThreadPriority
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadPriority
type ThreadPriority = 
Public Enum ThreadPriority
Herencia
ThreadPriority
Atributos

Campos

AboveNormal 3

Thread puede programarse después de los subprocesos con prioridad Highest y antes que los subprocesos con prioridad Normal.The Thread can be scheduled after threads with Highest priority and before those with Normal priority.

BelowNormal 1

Thread puede programarse después de los subprocesos con prioridad Normal y antes que los subprocesos con prioridad Lowest.The Thread can be scheduled after threads with Normal priority and before those with Lowest priority.

Highest 4

Thread puede programarse antes que los subprocesos que tengan cualquier otra prioridad.The Thread can be scheduled before threads with any other priority.

Lowest 0

Thread puede programarse después de los subprocesos que tengan cualquier otra prioridad.The Thread can be scheduled after threads with any other priority.

Normal 2

Thread puede programarse después de los subprocesos con prioridad AboveNormal y antes que los subprocesos con prioridad BelowNormal.The Thread can be scheduled after threads with AboveNormal priority and before those with BelowNormal priority. Los subprocesos tienen prioridad Normal de forma predeterminada.Threads have Normal priority by default.

Ejemplos

En el ejemplo de código siguiente se muestra el resultado de cambiar la prioridad de un subproceso.The following code example shows the result of changing the priority of a thread. Se crean tres subprocesos, la prioridad de un subproceso se establece en BelowNormal y la prioridad de un segundo se establece en AboveNormal.Three threads are created, the priority of one thread is set to BelowNormal, and the priority of a second is set to AboveNormal. Cada subproceso incrementa una variable en un while bucle y se ejecuta durante un tiempo establecido.Each thread increments a variable in a while loop and runs for a set time.

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
Imports System.Threading
Imports Timers = System.Timers

Public Module Example
   Dim t As Timers.Timer
   Private priorityTest As New PriorityTest()

    Public Sub Main()
        Dim thread1 As New Thread(AddressOf priorityTest.ThreadMethod)
        thread1.Name = "ThreadOne"
        Dim thread2 As New Thread(AddressOf priorityTest.ThreadMethod)
        thread2.Name = "ThreadTwo"
        thread2.Priority = ThreadPriority.BelowNormal
        Dim thread3 As New Thread(AddressOf priorityTest.ThreadMethod)
        thread3.Name = "ThreadThree"
        thread3.Priority = ThreadPriority.AboveNormal
        thread1.Start()
        thread2.Start()
        thread3.Start()

        ' Allow threads to execute for about 10 seconds.
        t = New Timers.Timer()
        t.AutoReset = False
        t.Interval = 10000
        AddHandler t.Elapsed, AddressOf Elapsed
        t.Start()
    End Sub

    Private Sub Elapsed(sender As Object, e As Timers.ElapsedEventArgs)
       priorityTest.LoopSwitch = False
    End Sub
End Module

Public Class PriorityTest
    Private Shared loopSwitchValue As Boolean
    <ThreadStatic> Shared threadCount As Long

    Sub New()
        loopSwitchValue = True
    End Sub

    WriteOnly Property LoopSwitch As Boolean
        Set
            loopSwitchValue = Value
        End Set
    End Property

    Sub ThreadMethod()
        Do While True
            threadCount += 1
            If Not loopSwitchValue Then Exit Do
        Loop

        Console.WriteLine("{0,-11} with {1,11} priority " &
            "has a count = {2,13}", Thread.CurrentThread.Name,
            Thread.CurrentThread.Priority.ToString(),
            threadCount.ToString("N0")) 
    End Sub
End Class
' The example displays the following output:
'    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

Comentarios

ThreadPrioritydefine el conjunto de todos los valores posibles para una prioridad de subproceso.ThreadPriority defines the set of all possible values for a thread priority. Las prioridades de subprocesos especifican la prioridad relativa de un subproceso frente a otro.Thread priorities specify the relative priority of one thread versus another.

Cada subproceso tiene una prioridad asignada.Every thread has an assigned priority. A los subprocesos creados en el tiempo Normal de ejecución se les asigna inicialmente la prioridad, mientras que los subprocesos creados fuera del tiempo de ejecución conservan su prioridad anterior cuando entran en tiempo de ejecución.Threads created within the runtime are initially assigned the Normal priority, while threads created outside the runtime retain their previous priority when they enter the runtime. Puede obtener y establecer la prioridad de un subproceso accediendo a su Priority propiedad.You can get and set the priority of a thread by accessing its Priority property.

Los subprocesos están programados para ejecutarse según su prioridad.Threads are scheduled for execution based on their priority. El algoritmo de programación que se usa para determinar el orden de ejecución de los subprocesos varía con cada sistema operativo.The scheduling algorithm used to determine the order of thread execution varies with each operating system. El sistema operativo también puede ajustar la prioridad del subproceso dinámicamente a medida que el foco de la interfaz de usuario se mueve entre el primer plano y el fondo.The operating system can also adjust the thread priority dynamically as the user interface's focus is moved between the foreground and the background.

La prioridad de un subproceso no afecta al estado del subproceso; el estado del subproceso debe ser Running antes de que el sistema operativo pueda programarlo.The priority of a thread does not affect the thread's state; the state of the thread must be Running before the operating system can schedule it.

Se aplica a

Consulte también: