Thread Thread Thread Thread Constructors

Definition

Überlädt

Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart)

Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten an, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht.Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started.

Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart)

Initialisiert eine neue Instanz der Thread-Klasse.Initializes a new instance of the Thread class.

Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32)

Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht, sowie eine maximale Stapelgröße für den Thread an.Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started and specifying the maximum stack size for the thread.

Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32)

Initialisiert eine neue Instanz der Thread-Klasse und gibt die maximale Stapelgröße für den Thread an.Initializes a new instance of the Thread class, specifying the maximum stack size for the thread.

Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart)

Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten an, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht.Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start);
public Thread (System.Threading.ParameterizedThreadStart start);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart)

Parameter

start
ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart

Ein Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen.A delegate that represents the methods to be invoked when this thread begins executing.

Ausnahmen

Beispiele

Das folgende Beispiel zeigt die Syntax zum Erstellen und Verwenden eines ParameterizedThreadStart-Delegaten mit einer statischen-Methode und einer Instanzmethode.The following example shows the syntax for creating and using a ParameterizedThreadStart delegate with a static method and an instance method.

using namespace System;
using namespace System::Threading;

namespace SystemThreadingExample
{
    public ref class Work
    {
    public:
        void StartThreads()
        {
            // Start a thread that calls a parameterized static method.
            Thread^ newThread = gcnew
                Thread(gcnew ParameterizedThreadStart(Work::DoWork));
            newThread->Start(42);
              
            // Start a thread that calls a parameterized instance method.
            Work^ someWork = gcnew Work;
            newThread = gcnew Thread(
                        gcnew ParameterizedThreadStart(someWork,
                        &Work::DoMoreWork));
            newThread->Start("The answer.");
        }

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

        void DoMoreWork(Object^ data)
        {
            Console::WriteLine("Instance thread procedure. Data='{0}'", 
                data);
        }
    };
}

//Entry point of example application
int main()
{
    SystemThreadingExample::Work^ samplework = 
        gcnew SystemThreadingExample::Work();
    samplework->StartThreads();
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'
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.'
Imports System.Threading

Public Class Work
    Shared Sub Main()
        ' Start a thread that calls a parameterized static method.
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start(42)

        ' Start a thread that calls a parameterized instance method.
        Dim w As New Work()
        newThread = New Thread(AddressOf w.DoMoreWork)
        newThread.Start("The answer.")
    End Sub
 
    Public Shared Sub DoWork(ByVal data As Object)
        Console.WriteLine("Static thread procedure. Data='{0}'",
                          data)
    End Sub

    Public Sub DoMoreWork(ByVal data As Object) 
        Console.WriteLine("Instance thread procedure. Data='{0}'",
                          data)
    End Sub
End Class
' This example displays output like the following:
'    Static thread procedure. Data='42'
'    Instance thread procedure. Data='The answer.'

Hinweise

Ein Thread beginnt nicht mit der Ausführung, wenn er erstellt wird.A thread does not begin executing when it is created. Um den Thread für die Ausführung zu planen, müssen Sie die Start-Methode aufzurufen.To schedule the thread for execution, call the Start method. Um ein Datenobjekt an den Thread zu übergeben, verwenden Sie die Start(Object)-Methoden Überladung.To pass a data object to the thread, use the Start(Object) method overload.

Hinweis

Visual Basic Benutzer den ThreadStart-Konstruktor beim Erstellen eines Threads weglassen können.Visual Basic users can omit the ThreadStart constructor when creating a thread. Verwenden Sie den AddressOf-Operator, wenn Sie die Methode übergeben, z. b. Dim t As New Thread(AddressOf ThreadProc).Use the AddressOf operator when passing your method, for example Dim t As New Thread(AddressOf ThreadProc). Visual Basic den ThreadStart-Konstruktor automatisch aufruft.Visual Basic automatically calls the ThreadStart constructor.

Siehe auch

Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart)

Initialisiert eine neue Instanz der Thread-Klasse.Initializes a new instance of the Thread class.

public:
 Thread(System::Threading::ThreadStart ^ start);
public Thread (System.Threading.ThreadStart start);
new System.Threading.Thread : System.Threading.ThreadStart -> System.Threading.Thread
Public Sub New (start As ThreadStart)

Parameter

start
ThreadStart ThreadStart ThreadStart ThreadStart

Ein ThreadStart-Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen.A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

Ausnahmen

Der start-Parameter ist null.The start parameter is null.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie ein Thread erstellt wird, der eine statische Methode ausführt.The following code example shows how to create a thread that executes a static method.

using namespace System;
using namespace System::Threading;
ref class Work
{
private:
   Work(){}


public:
   static void DoWork(){}

};

int main()
{
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( &Work::DoWork ) );
   newThread->Start();
}

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work.DoWork));
        newThread.Start();
    }
}

class Work 
{
    Work() {}

    public static void DoWork() {}
}
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main()
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work 

    Private Sub New()
    End Sub

    Shared Sub DoWork()
    End Sub

End Class

Im folgenden Codebeispiel wird gezeigt, wie ein Thread erstellt wird, der eine Instanzmethode ausführt.The following code example shows how to create a thread that executes an instance method.

using namespace System;
using namespace System::Threading;
ref class Work
{
public:
   Work(){}

   void DoWork(){}

};

int main()
{
   Work^ threadWork = gcnew Work;
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( threadWork, &Work::DoWork ) );
   newThread->Start();
}

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Work threadWork = new Work();
        Thread newThread = 
            new Thread(new ThreadStart(threadWork.DoWork));
        newThread.Start();
    }
}

class Work 
{
    public Work() {}

    public void DoWork() {}
}
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main() 
        Dim threadWork As New Work()
        Dim newThread As New Thread(AddressOf threadWork.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work

    Sub New()
    End Sub

    Sub DoWork() 
    End Sub

End Class

Hinweise

Ein Thread beginnt nicht mit der Ausführung, wenn er erstellt wird.A thread does not begin executing when it is created. Um den Thread für die Ausführung zu planen, müssen Sie die Start-Methode aufzurufen.To schedule the thread for execution, call the Start method.

Hinweis

Visual Basic Benutzer den ThreadStart-Konstruktor beim Erstellen eines Threads weglassen können.Visual Basic users can omit the ThreadStart constructor when creating a thread. Verwenden Sie den AddressOf-Operator, wenn Sie die Methode übergeben, z. b. Dim t As New Thread(AddressOf ThreadProc).Use the AddressOf operator when passing your method for example Dim t As New Thread(AddressOf ThreadProc). Visual Basic den ThreadStart-Konstruktor automatisch aufruft.Visual Basic automatically calls the ThreadStart constructor.

Siehe auch

Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32)

Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht, sowie eine maximale Stapelgröße für den Thread an.Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started and specifying the maximum stack size for the thread.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start, int maxStackSize);
public Thread (System.Threading.ParameterizedThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart * int -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart, maxStackSize As Integer)

Parameter

start
ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart

Ein ParameterizedThreadStart-Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen.A ParameterizedThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32 Int32 Int32 Int32

Die maximale Stapelgröße, in Bytes, für den Thread, oder 0 (null), wenn die angegebene maximale Standardstapelgröße aus dem Header der ausführbaren Datei verwendet werden soll.The maximum stack size, in bytes, to be used by the thread, or 0 to use the default maximum stack size specified in the header for the executable.

Wichtig: Für teilweise vertrauenswürdigen Code wird maxStackSize ignoriert, wenn sie größer als die Standardstapelgröße ist.Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. Es werden keine Ausnahmen ausgelöst.No exception is thrown.

Ausnahmen

Hinweise

Vermeiden Sie die Verwendung dieser Konstruktorüberladung.Avoid using this constructor overload. Die Standard Stapelgröße, die von der Thread(ParameterizedThreadStart)-Konstruktorüberladung verwendet wird, ist die empfohlene Stapelgröße für Threads.The default stack size used by the Thread(ParameterizedThreadStart) constructor overload is the recommended stack size for threads. Wenn ein Thread Arbeitsspeicher Probleme aufweist, ist der Programmierfehler wahrscheinlich, wie z. b. eine unendliche Rekursion.If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

Wichtig

Beginnend mit dem .NET Framework 4.NET Framework 4 kann nur voll vertrauenswürdiger Code maxStackSize auf einen Wert festlegen, der größer ist als die Standard Stapelgröße (1 Megabyte).Beginning with the .NET Framework 4.NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). Wenn ein größerer Wert für maxStackSize angegeben wird, wenn Code mit teilweiser Vertrauenswürdigkeit ausgeführt wird, wird maxStackSize ignoriert und die Standard Stapelgröße verwendet.If a larger value is specified for maxStackSize when code is running with partial trust, maxStackSize is ignored and the default stack size is used. Es werden keine Ausnahmen ausgelöst.No exception is thrown. Code auf jeder Vertrauens Ebene kann maxStackSize auf einen Wert festlegen, der kleiner als die Standard Stapelgröße ist.Code at any trust level can set maxStackSize to a value that is less than the default stack size.

Hinweis

Wenn Sie eine voll vertrauenswürdige Bibliothek entwickeln, die von teilweise vertrauenswürdigem Code verwendet wird, und einen Thread starten müssen, der einen großen Stapel erfordert, müssen Sie vor dem Erstellen des Threads die volle Vertrauenswürdigkeit bestätigen, oder es wird die Standard Stapelgröße verwendet.If you are developing a fully trusted library that will be used by partially trusted code, and you need to start a thread that requires a large stack, you must assert full trust before creating the thread, or the default stack size will be used. Führen Sie diese Schritte nur aus, wenn Sie den Code, der auf dem Thread ausgeführt wird, vollständig steuern.Do not do this unless you fully control the code that runs on the thread.

Wenn maxStackSize kleiner als die minimale Stapelgröße ist, wird die minimale Stapelgröße verwendet.If maxStackSize is less than the minimum stack size, the minimum stack size is used. Wenn maxStackSize kein Vielfaches der Seitengröße ist, wird es auf das nächste größere Vielfache der Seitengröße gerundet.If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. Wenn Sie z. b. die .NET Framework Version 2,0 unter Windows Vista verwenden, ist 256 KB (262.144 Bytes) die minimale Stapelgröße, und die Seitengröße beträgt 64 KB (65.536 Bytes).For example, if you are using the .NET Framework version 2.0 on Windows Vista, 256KB (262,144 bytes) is the minimum stack size, and the page size is 64KB (65,536 bytes).

Hinweis

In Versionen von Microsoft Windows vor Windows XP und Windows Server 2003 wird maxStackSize ignoriert und die im ausführbaren Header angegebene Stapelgröße verwendet.On versions of Microsoft Windows prior to Windows XP and Windows Server 2003, maxStackSize is ignored, and the stack size specified in the executable header is used.

Wenn Sie eine sehr kleine Stapelgröße angeben, müssen Sie möglicherweise die Stapelüberlauf Prüfung deaktivieren.If you specify a very small stack size, you might need to disable stack-overflow probing. Wenn der Stapel stark eingeschränkt ist, kann die Überprüfung selbst zu einem Stapelüberlauf führen.When the stack is severely constrained, the probing can itself cause a stack overflow. Fügen Sie der Anwendungs Konfigurationsdatei Folgendes hinzu, um die Stapelüberlauf Prüfung zu deaktivieren.To disable stack overflow probing, add the following to your application configuration file.

<configuration>  
  <runtime>  
    <disableStackOverflowProbing enabled="true"/>  
  </runtime>  
</configuration>  

Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32)

Initialisiert eine neue Instanz der Thread-Klasse und gibt die maximale Stapelgröße für den Thread an.Initializes a new instance of the Thread class, specifying the maximum stack size for the thread.

public:
 Thread(System::Threading::ThreadStart ^ start, int maxStackSize);
public Thread (System.Threading.ThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ThreadStart * int -> System.Threading.Thread
Public Sub New (start As ThreadStart, maxStackSize As Integer)

Parameter

start
ThreadStart ThreadStart ThreadStart ThreadStart

Ein ThreadStart-Delegat, der die Methoden darstellt, die bei Beginn der Ausführung dieses Threads aufgerufen werden müssen.A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32 Int32 Int32 Int32

Die maximale Stapelgröße, in Bytes, für den Thread, oder 0 (null), wenn die angegebene maximale Standardstapelgröße aus dem Header der ausführbaren Datei verwendet werden soll.The maximum stack size, in bytes, to be used by the thread, or 0 to use the default maximum stack size specified in the header for the executable.

Wichtig: Für teilweise vertrauenswürdigen Code wird maxStackSize ignoriert, wenn sie größer als die Standardstapelgröße ist.Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. Es werden keine Ausnahmen ausgelöst.No exception is thrown.

Ausnahmen

Hinweise

Vermeiden Sie die Verwendung dieser Konstruktorüberladung.Avoid using this constructor overload. Die Standard Stapelgröße, die von der Thread(ThreadStart)-Konstruktorüberladung verwendet wird, ist die empfohlene Stapelgröße für Threads.The default stack size used by the Thread(ThreadStart) constructor overload is the recommended stack size for threads. Wenn ein Thread Arbeitsspeicher Probleme aufweist, ist der Programmierfehler wahrscheinlich, wie z. b. eine unendliche Rekursion.If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

Wichtig

Beginnend mit dem .NET Framework 4.NET Framework 4 kann nur voll vertrauenswürdiger Code maxStackSize auf einen Wert festlegen, der größer ist als die Standard Stapelgröße (1 Megabyte).Beginning with the .NET Framework 4.NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). Wenn ein größerer Wert für maxStackSize angegeben wird, wenn Code mit teilweiser Vertrauenswürdigkeit ausgeführt wird, wird maxStackSize ignoriert und die Standard Stapelgröße verwendet.If a larger value is specified for maxStackSize when code is running with partial trust, maxStackSize is ignored and the default stack size is used. Es werden keine Ausnahmen ausgelöst.No exception is thrown. Code auf jeder Vertrauens Ebene kann maxStackSize auf einen Wert festlegen, der kleiner als die Standard Stapelgröße ist.Code at any trust level can set maxStackSize to a value that is less than the default stack size.

Hinweis

Wenn Sie eine voll vertrauenswürdige Bibliothek entwickeln, die von teilweise vertrauenswürdigem Code verwendet wird, und einen Thread starten müssen, der einen großen Stapel erfordert, müssen Sie vor dem Erstellen des Threads die volle Vertrauenswürdigkeit bestätigen, oder es wird die Standard Stapelgröße verwendet.If you are developing a fully trusted library that will be used by partially trusted code, and you need to start a thread that requires a large stack, you must assert full trust before creating the thread, or the default stack size will be used. Führen Sie diese Schritte nur aus, wenn Sie den Code, der auf dem Thread ausgeführt wird, vollständig steuern.Do not do this unless you fully control the code that runs on the thread.

Wenn maxStackSize kleiner als die minimale Stapelgröße ist, wird die minimale Stapelgröße verwendet.If maxStackSize is less than the minimum stack size, the minimum stack size is used. Wenn maxStackSize kein Vielfaches der Seitengröße ist, wird es auf das nächste größere Vielfache der Seitengröße gerundet.If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. Wenn Sie z. b. die .NET Framework Version 2,0 unter Windows Vista verwenden, ist 256 KB (262.144 Bytes) die minimale Stapelgröße, und die Seitengröße beträgt 64 KB (65.536 Bytes).For example, if you are using the .NET Framework version 2.0 on Windows Vista, 256KB (262,144 bytes) is the minimum stack size, and the page size is 64KB (65,536 bytes).

Hinweis

In Versionen von Microsoft Windows vor Windows XP und Windows Server 2003 wird maxStackSize ignoriert und die im ausführbaren Header angegebene Stapelgröße verwendet.On versions of Microsoft Windows prior to Windows XP and Windows Server 2003, maxStackSize is ignored, and the stack size specified in the executable header is used.

Wenn Sie eine sehr kleine Stapelgröße angeben, müssen Sie möglicherweise die Stapelüberlauf Prüfung deaktivieren.If you specify a very small stack size, you might need to disable stack-overflow probing. Wenn der Stapel stark eingeschränkt ist, kann die Überprüfung selbst zu einem Stapelüberlauf führen.When the stack is severely constrained, the probing can itself cause a stack overflow. Fügen Sie der Anwendungs Konfigurationsdatei Folgendes hinzu, um die Stapelüberlauf Prüfung zu deaktivieren.To disable stack overflow probing, add the following to your application configuration file.

<configuration>  
  <runtime>  
    <disableStackOverflowProbing enabled="true"/>  
  </runtime>  
</configuration>  

Gilt für: