Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ThreadStart-Delegat

Stellt die Methode dar, die für einen Thread ausgeführt wird.

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

[ComVisibleAttribute(true)]
public delegate void ThreadStart()

Wenn ein verwalteter Thread erstellt wird, wird die Methode, die im Thread ausgeführt wird, durch einen ThreadStart-Delegaten oder einen ParameterizedThreadStart-Delegaten dargestellt, der an den Thread-Konstruktor übergeben wird. Der Thread beginnt erst dann mit der Ausführung, wenn die Thread.Start-Methode aufgerufen wird. Die Ausführung beginnt in der ersten Zeile der Methode, die durch den ThreadStart-Delegaten oder den ParameterizedThreadStart-Delegaten dargestellt wird.

HinweisHinweis

Benutzer von Visual Basic und C# können beim Erstellen eines Threads den ThreadStart-Delegatkonstruktor oder den ParameterizedThreadStart-Delegatkonstruktor auslassen. Verwenden Sie in Visual Basic den Operator AddressOf beim Übergeben der Methode an den Thread-Konstruktor, z. B. Dim t As New Thread(AddressOf ThreadProc). Geben Sie in C# einfach den Namen der Threadprozedur an. Der Compiler wählt den korrekten Delegatkonstruktor aus.

[C++]

HinweisHinweis

In Version 2.0 von .NET Framework ist für das Erstellen eines ThreadStart-Delegaten für eine statische Methode in C++ nur ein Parameter erforderlich: die durch einen Klassennamen qualifizierte Adresse der Rückrufmethode. In früheren Versionen waren zwei Parameter beim Erstellen eines Delegaten für eine statische Methode erforderlich: 0 (null) und die Methodenadresse. Für eine Instanzenmethode sind in allen Versionen zwei Parameter erforderlich: die Instanzenvariable und die Methodenadresse.

Das folgende Codebeispiel zeigt die Syntax zum Erstellen und Verwenden eines ThreadStart-Delegaten mit einer Instanzenmethode und einer statischen Methode.

Ein weiteres einfaches Beispiel zur Erstellung eines ThreadStart-Delegaten finden Sie in der Beschreibung der Thread.Start()-Methodenüberladung. Weitere Informationen über das Erstellen von Threads finden Sie unter Erstellen von Threads und Übergeben von Daten zur Startzeit.


using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        // To start a thread using a static thread procedure, use the
        // class name and method name when you create the ThreadStart
        // delegate. Beginning in version 2.0 of the .NET Framework,
        // it is not necessary to create a delegate explicitly. 
        // Specify the name of the method in the Thread constructor, 
        // and the compiler selects the correct delegate. For example:
        //
        // Thread newThread = new Thread(Work.DoWork);
        //
        ThreadStart threadDelegate = new ThreadStart(Work.DoWork);
        Thread newThread = new Thread(threadDelegate);
        newThread.Start();

        // To start a thread using an instance method for the thread 
        // procedure, use the instance variable and method name when 
        // you create the ThreadStart delegate. Beginning in version
        // 2.0 of the .NET Framework, the explicit delegate is not
        // required.
        //
        Work w = new Work();
        w.Data = 42;
        threadDelegate = new ThreadStart(w.DoMoreWork);
        newThread = new Thread(threadDelegate);
        newThread.Start();
    }
}

class Work 
{
    public static void DoWork() 
    {
        Console.WriteLine("Static thread procedure."); 
    }
    public int Data;
    public void DoMoreWork() 
    {
        Console.WriteLine("Instance thread procedure. Data={0}", Data); 
    }
}

/* This code example produces the following output (the order 
   of the lines might vary):
Static thread procedure.
Instance thread procedure. Data=42
 */


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft