Thread Constructeurs

Définition

Initialise une nouvelle instance de la classe Thread.

Surcharges

Nom Description
Thread(ParameterizedThreadStart)

Initialise une nouvelle instance de la Thread classe, en spécifiant un délégué qui permet à un objet d’être transmis au thread au démarrage du thread.

Thread(ThreadStart)

Initialise une nouvelle instance de la classe Thread.

Thread(ParameterizedThreadStart, Int32)

Initialise une nouvelle instance de la Thread classe, en spécifiant un délégué qui permet à un objet d’être transmis au thread lorsque le thread est démarré et en spécifiant la taille de pile maximale pour le thread.

Thread(ThreadStart, Int32)

Initialise une nouvelle instance de la Thread classe, en spécifiant la taille maximale de la pile pour le thread.

Thread(ParameterizedThreadStart)

Initialise une nouvelle instance de la Thread classe, en spécifiant un délégué qui permet à un objet d’être transmis au thread au démarrage du thread.

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)

Paramètres

start
ParameterizedThreadStart

Délégué qui représente les méthodes à appeler lorsque ce thread commence à s’exécuter.

Exceptions

start a la valeur null.

Exemples

L’exemple suivant montre la syntaxe de création et d’utilisation d’un ParameterizedThreadStart délégué avec une méthode statique et une méthode d’instance.

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.'
open System.Threading

type Work() =
    static member DoWork(data: obj) =
        printfn $"Static thread procedure. Data='{data}'"

    member _.DoMoreWork(data: obj) =
        printfn $"Instance thread procedure. Data='{data}'"

// Start a thread that calls a parameterized static method.
let newThread = Thread(ParameterizedThreadStart Work.DoWork)
newThread.Start 42

// Start a thread that calls a parameterized instance method.
let w = Work()
let newThread2 = Thread(ParameterizedThreadStart w.DoMoreWork)
newThread.Start "The answer."

// 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.'

Remarques

Un thread ne commence pas à s’exécuter lors de sa création. Pour planifier l’exécution du thread, appelez la Start méthode. Pour transmettre un objet de données au thread, utilisez la surcharge de Start(Object) méthode.

Note

Visual Basic utilisateurs peuvent omettre le constructeur ThreadStart lors de la création d’un thread. Utilisez l’opérateur lors de la AddressOf transmission de votre méthode, par exemple Dim t As New Thread(AddressOf ThreadProc). Visual Basic appelle automatiquement le constructeur ThreadStart.

Voir aussi

S’applique à

Thread(ThreadStart)

Initialise une nouvelle instance de la classe Thread.

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)

Paramètres

start
ThreadStart

Délégué ThreadStart qui représente les méthodes à appeler lorsque ce thread commence à s’exécuter.

Exceptions

Le start paramètre est null.

Exemples

L’exemple de code suivant montre comment créer un thread qui exécute une méthode statique.

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() {}
}
open System.Threading

module Work =
    let doWork () = ()

let newThread = Thread(ThreadStart Work.doWork)
newThread.Start()
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

L’exemple de code suivant montre comment créer un thread qui exécute une méthode d’instance.

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() {}
}
open System.Threading

type Work() =
    member _.DoWork() = ()

let threadWork = Work()
let newThread = Thread(ThreadStart threadWork.DoWork)
newThread.Start()
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

Remarques

Un thread ne commence pas à s’exécuter lors de sa création. Pour planifier l’exécution du thread, appelez la Start méthode.

Note

Visual Basic utilisateurs peuvent omettre le constructeur ThreadStart lors de la création d’un thread. Utilisez l’opérateur lors de la AddressOf transmission de votre méthode, par exemple Dim t As New Thread(AddressOf ThreadProc). Visual Basic appelle automatiquement le constructeur ThreadStart.

Voir aussi

S’applique à

Thread(ParameterizedThreadStart, Int32)

Initialise une nouvelle instance de la Thread classe, en spécifiant un délégué qui permet à un objet d’être transmis au thread lorsque le thread est démarré et en spécifiant la taille de pile maximale pour le 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)

Paramètres

start
ParameterizedThreadStart

Délégué ParameterizedThreadStart qui représente les méthodes à appeler lorsque ce thread commence à s’exécuter.

maxStackSize
Int32

Taille maximale de la pile, en octets, à utiliser par le thread ou 0 pour utiliser la taille de pile maximale par défaut spécifiée dans l’en-tête de l’exécutable.

Important pour le code partiellement approuvé, maxStackSize est ignoré s’il est supérieur à la taille de pile par défaut. Aucune exception n’est générée.

Exceptions

start a la valeur null.

maxStackSize est inférieur à zéro.

Remarques

Évitez d’utiliser cette surcharge de constructeur. La taille de pile par défaut utilisée par la surcharge du Thread(ParameterizedThreadStart) constructeur est la taille de pile recommandée pour les threads. Si un thread rencontre des problèmes de mémoire, la cause la plus probable est l’erreur de programmation, telle que la récursivité infinie.

Important

À compter du .NET Framework 4, seul le code entièrement approuvé peut définir maxStackSize sur une valeur supérieure à la taille de pile par défaut (1 mégaoctet). Si une valeur supérieure est spécifiée pour le moment où maxStackSize le code s’exécute avec une approbation partielle, maxStackSize est ignoré et la taille de pile par défaut est utilisée. Aucune exception n’est générée. Le code à n’importe quel niveau de confiance peut être défini maxStackSize sur une valeur inférieure à la taille de pile par défaut.

Note

Si vous développez une bibliothèque entièrement approuvée qui sera utilisée par du code partiellement approuvé et que vous devez démarrer un thread nécessitant une grande pile, vous devez affirmer une confiance totale avant de créer le thread, ou la taille de pile par défaut sera utilisée. Ne faites pas cela, sauf si vous contrôlez entièrement le code qui s’exécute sur le thread.

Si maxStackSize elle est inférieure à la taille minimale de la pile, la taille minimale de la pile est utilisée. S’il maxStackSize ne s’agit pas d’un multiple de la taille de page, il est arrondi au multiple supérieur suivant de la taille de page.

Note

Sur les versions de Microsoft Windows antérieures à Windows XP et Windows Server 2003, maxStackSize est ignorée et la taille de pile spécifiée dans l’en-tête exécutable est utilisée.

Si vous spécifiez une très petite taille de pile, vous devrez peut-être désactiver la détection de dépassement de capacité de pile. Lorsque la pile est sévèrement contrainte, la détection peut elle-même provoquer un dépassement de capacité de pile. Pour désactiver la détection de dépassement de capacité de pile, ajoutez ce qui suit au fichier de configuration de votre application dans une application .NET Framework.

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

S’applique à

Thread(ThreadStart, Int32)

Initialise une nouvelle instance de la Thread classe, en spécifiant la taille maximale de la pile pour le 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)

Paramètres

start
ThreadStart

Délégué ThreadStart qui représente les méthodes à appeler lorsque ce thread commence à s’exécuter.

maxStackSize
Int32

Taille maximale de la pile, en octets, à utiliser par le thread ou 0 pour utiliser la taille de pile maximale par défaut spécifiée dans l’en-tête de l’exécutable.

Important pour le code partiellement approuvé, maxStackSize est ignoré s’il est supérieur à la taille de pile par défaut. Aucune exception n’est générée.

Exceptions

start a la valeur null.

maxStackSize est inférieur à zéro.

Remarques

Évitez d’utiliser cette surcharge de constructeur. La taille de pile par défaut utilisée par la surcharge du Thread(ThreadStart) constructeur est la taille de pile recommandée pour les threads. Si un thread rencontre des problèmes de mémoire, la cause la plus probable est l’erreur de programmation, telle que la récursivité infinie.

Important

À compter du .NET Framework 4, seul le code entièrement approuvé peut définir maxStackSize sur une valeur supérieure à la taille de pile par défaut (1 mégaoctet). Si une valeur supérieure est spécifiée pour le moment où maxStackSize le code s’exécute avec une approbation partielle, maxStackSize est ignoré et la taille de pile par défaut est utilisée. Aucune exception n’est générée. Le code à n’importe quel niveau de confiance peut être défini maxStackSize sur une valeur inférieure à la taille de pile par défaut.

Note

Si vous développez une bibliothèque entièrement approuvée qui sera utilisée par du code partiellement approuvé et que vous devez démarrer un thread nécessitant une grande pile, vous devez affirmer une confiance totale avant de créer le thread, ou la taille de pile par défaut sera utilisée. Ne faites pas cela, sauf si vous contrôlez entièrement le code qui s’exécute sur le thread.

Si maxStackSize elle est inférieure à la taille minimale de la pile, la taille minimale de la pile est utilisée. S’il maxStackSize ne s’agit pas d’un multiple de la taille de page, il est arrondi au multiple supérieur suivant de la taille de page. Par exemple, si vous utilisez le .NET Framework version 2.0 sur Windows Vista, 256 Ko (262 144 octets) est la taille minimale de la pile, et la taille de la page est de 64 Ko (65 536 octets).

Note

Sur les versions de Microsoft Windows antérieures à Windows XP et Windows Server 2003, maxStackSize est ignorée et la taille de pile spécifiée dans l’en-tête exécutable est utilisée.

Si vous spécifiez une très petite taille de pile, vous devrez peut-être désactiver la détection de dépassement de capacité de pile. Lorsque la pile est sévèrement contrainte, la détection peut elle-même provoquer un dépassement de capacité de pile. Pour désactiver la détection de dépassement de capacité de pile, ajoutez ce qui suit au fichier de configuration de votre application dans une application .NET Framework.

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

S’applique à