Thread.Priority Vlastnost

Definice

Získává nebo nastavuje hodnotu, která indikuje prioritu plánování vlákna.

public System.Threading.ThreadPriority Priority { get; set; }

Hodnota vlastnosti

ThreadPriority

Jedna z ThreadPriority hodnot. Výchozí hodnota je Normal.

Výjimky

Vlákno dosáhlo konečného stavu, například Aborted .

Hodnota zadaná pro operaci set není platná ThreadPriority hodnota.

Příklady

Následující příklad ukazuje výsledek změny priority vlákna. Tři vlákna jsou vytvořena, priorita jednoho vlákna je nastavena na hodnotu ThreadPriority.BelowNormal a priorita druhé je nastavena na hodnotu ThreadPriority.AboveNormal . Každé vlákno zvýší proměnnou ve while smyčce a spustí se pro nastavený čas.

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 volatile 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

Poznámky

K vláknu lze přiřadit jednu z následujících ThreadPriority hodnot priority:

  • Highest

  • AboveNormal

  • Normal

  • BelowNormal

  • Lowest

Operační systémy nejsou vyžadovány pro respektování priority vlákna.

Platí pro

Viz také