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

ParameterizedThreadStart-Delegat

 

Veröffentlicht: Oktober 2016

Stellt die Methode dar, die in einem Thread ausgeführt wird.

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

[ComVisibleAttribute(false)]
public delegate void ParameterizedThreadStart(
	object obj
)

Parameter

obj
Type: System.Object

Ein Objekt, das Daten für die Threadprozedur enthält.

Wenn ein verwalteter Thread erstellt wird, wird durch die Methode, die auf dem Thread ausgeführt wird dargestellt:

  • Ein ThreadStart Delegat, der an die Thread.Thread(ThreadStart) Konstruktor. Jede Methode, die über keine Parameter verfügt und zurückgibt void in c# oder einer Sub Prozedur in Visual Basic kann der Delegat darstellen.

  • Ein ParameterizedThreadStart Delegat, der an die Thread.Thread(ParameterizedThreadStart, Int32) Konstruktor. Jede Methode, die einen einzelnen vom Typ Parameter Object und gibt "void" in C#- oder ist eine Subprozedur in Visual Basic kann der Delegat darstellen.

Der Thread beginnt nicht ausgeführt werden, bis die Thread.Start -Methode aufgerufen wird. Die ThreadStart oder ParameterizedThreadStart Delegaten für den Thread aufgerufen wird, und die Ausführung beginnt, in der ersten Zeile der Methode, die durch den Delegaten dargestellt wird. Im Fall von der ParameterizedThreadStart zu delegieren, das Objekt, das an die Start(Object) Methode an den Delegaten übergeben wird.

System_CAPS_noteHinweis

Visual Basic- und C#-Benutzer können Auslassen der ThreadStart oder ParameterizedThreadStart Delegatkonstruktor beim Erstellen eines Threads. In Visual Basic verwenden die AddressOf Operator beim Ihrer Methode zum Übergeben der Thread Konstruktor, z. B. Dim t As New Thread(AddressOf ThreadProc). Geben Sie in c# ist einfach der Name der Threadprozedur an. Der Compiler wählt den richtigen Delegatkonstruktor.

System_CAPS_noteHinweis

Beim Erstellen einer ParameterizedThreadStart delegieren für eine Instanzmethode in C++ wird der erste Parameter des Konstruktors die Instanzvariable ist. Bei einer statischen Methode ist der erste Parameter des Konstruktors 0 (null). Bei einer statischen Methode Delegatkonstruktors erfordert nur einen Parameter: die Adresse der Rückrufmethode darstellt, durch den Klassennamen qualifiziert.

Die ParameterizedThreadStart delegieren und Thread.Start(Object) methodenüberladung erleichtern die Daten an eine Threadprozedur übergeben, aber diese Technik ist nicht typsicher, da jedes Objekt übergeben werden kann Thread.Start(Object). Eine robustere Möglichkeit, Daten an eine Threadprozedur übergeben wird, die Threadprozedur und Datenfelder zu einem Worker-Objekt eingefügt werden soll. Weitere Informationen finden Sie unter Creating Threads and Passing Data at Start Time.

Die ParameterizedThreadStart Delegat unterstützt nur einen einzelnen Parameter. Sie können mehrere Datenelemente zum Übergeben der ParameterizedThreadStart , indem Sie diesen Parameter an eines der folgenden machen:

Im folgenden Codebeispiel wird mit einem ParameterizedThreadStart delegieren mit einer statischen Methode und eine Instanzenmethode ausgeführt. Die erste ParameterizedThreadStart Delegat wird dargestellt, von der statischen DoWork -Methode und die zweite wird dargestellt, von der Instanz DoMoreWork Methode. Beide Methoden entsprechen den ParameterizedThreadStart Delegatsignatur; das heißt, sie haben einen einzelnen Parameter vom Typ Object und keinen Wert zurück.

System_CAPS_noteHinweis

Die Visual Basic- und C#-Compiler Ableiten der ParameterizedThreadStart Delegieren von den Signaturen der DoWork und DoMoreWork Methoden, und rufen Sie den richtigen Konstruktor. Daher ist keine expliziten Konstruktoraufruf im Code.

using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // Start a thread that calls a parameterized static method.
        Thread newThread = new Thread(Work.DoWork);
        newThread.Start(42);

        // Start a thread that calls a parameterized instance method.
        Work w = new Work();
        newThread = new Thread(w.DoMoreWork);
        newThread.Start("The answer.");
    }

    public static void DoWork(object data)
    {
        Console.WriteLine("Static thread procedure. Data='{0}'",
            data);
    }

    public void DoMoreWork(object data)
    {
        Console.WriteLine("Instance thread procedure. Data='{0}'",
            data);
    }
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'

.NET Framework
Verfügbar seit 2.0
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: