Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Thread.Priority-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft einen Wert ab, der die Planungspriorität eines Threads angibt, oder legt diesen fest.

Namespace:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

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

Eigenschaftswert

Type: System.Threading.ThreadPriority

Einer der ThreadPriority-Werte. Der Standardwert ist ThreadPriority.Normal.

Exception Condition
ThreadStateException

Der Thread hat einen Endzustand erreicht, z. B. Aborted.

ArgumentException

Der für einen SET-Vorgang festgelegte Wert ist kein gültiger ThreadPriority-Wert.

Ein Thread kann eines der folgenden Priorität zugewiesen werden ThreadPriority Werte:

  • Highest

  • AboveNormal

  • Normal

  • BelowNormal

  • Lowest

Betriebssysteme sind nicht erforderlich, die Priorität eines Threads zu berücksichtigen.

Das folgende Beispiel zeigt das Ergebnis einer Änderung der Priorität eines Threads. Drei Threads erstellt, wird die Priorität eines Threads um ThreadPriority.BelowNormal, und die Priorität eines zweiten wird festgelegt, um ThreadPriority.AboveNormal. Jeder Thread erhöht eine Variable in einem while Schleife und Testläufe für einen festgelegten Zeitraum.

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
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: