ThreadPriority ThreadPriority ThreadPriority ThreadPriority Enum

Definition

Gibt die Planungspriorität eines Thread an.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
Vererbung
ThreadPriorityThreadPriorityThreadPriorityThreadPriority
Attribute

Felder

AboveNormal AboveNormal AboveNormal AboveNormal 3

Der Thread kann anschließend an die Threads mit Highest-Priorität und vor den Threads mit Normal-Priorität geplant werden.The Thread can be scheduled after threads with Highest priority and before those with Normal priority.

BelowNormal BelowNormal BelowNormal BelowNormal 1

Der Thread kann anschließend an die Threads mit Normal-Priorität und vor den Threads mit Lowest-Priorität geplant werden.The Thread can be scheduled after threads with Normal priority and before those with Lowest priority.

Highest Highest Highest Highest 4

Der Thread kann vor Threads mit jeder anderen Priorität geplant werden.The Thread can be scheduled before threads with any other priority.

Lowest Lowest Lowest Lowest 0

Der Thread kann nach Threads mit jeder anderen Priorität geplant werden.The Thread can be scheduled after threads with any other priority.

Normal Normal Normal Normal 2

Der Thread kann anschließend an die Threads mit AboveNormal-Priorität und vor den Threads mit BelowNormal-Priorität geplant werden.The Thread can be scheduled after threads with AboveNormal priority and before those with BelowNormal priority. Threads haben standardmäßig Normal-Priorität.Threads have Normal priority by default.

Beispiele

Das folgende Codebeispiel zeigt das Ergebnis der Änderung der Priorität eines Threads.The following code example shows the result of changing the priority of a thread. Es werden drei Threads erstellt, die Priorität eines Threads auf ' BelowNormal ' festgelegt, und die Priorität einer Sekunde ist auf ' AboveNormal ' festgelegt.Three threads are created, the priority of one thread is set to BelowNormal, and the priority of a second is set to AboveNormal. Jeder Thread erhöht eine Variable in einer while Schleife und wird für eine festgelegte Zeit ausgeführt.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

Hinweise

ThreadPrioritydefiniert den Satz aller möglichen Werte für eine Thread Priorität.ThreadPriority defines the set of all possible values for a thread priority. Thread Prioritäten geben die relative Priorität eines Threads im Vergleich zu einem anderen Thread an.Thread priorities specify the relative priority of one thread versus another.

Jedem Thread ist eine Priorität zugewiesen.Every thread has an assigned priority. Threads, die in der Laufzeit erstellt werden, Normal werden anfänglich der Priorität zugewiesen, während von außerhalb der Laufzeit erstellte Threads ihre vorherige Priorität behalten, wenn Sie die Laufzeit eingeben.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. Sie können die Priorität eines Threads erreichen und festlegen, indem Sie auf Priority seine-Eigenschaft zugreifen.You can get and set the priority of a thread by accessing its Priority property.

Die Ausführung von Threads wird basierend auf ihrer Priorität geplant.Threads are scheduled for execution based on their priority. Der Planungs Algorithmus, mit dem die Reihenfolge der Thread Ausführung bestimmt wird, variiert je nach Betriebssystem.The scheduling algorithm used to determine the order of thread execution varies with each operating system. Das Betriebssystem kann die Thread Priorität auch dynamisch anpassen, wenn der Fokus der Benutzeroberfläche zwischen dem Vordergrund und dem Hintergrund verschoben wird.The operating system can also adjust the thread priority dynamically as the user interface's focus is moved between the foreground and the background.

Die Priorität eines Threads hat keinen Einfluss auf den Zustand des Threads. der Thread Zustand muss sein, bevor Running er vom Betriebssystem geplant werden kann.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.

Gilt für:

Siehe auch