Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Thread, classe

Crée et contrôle un thread, en définit la propriété et en obtient l'état.

Espace de noms :  System.Threading
Assembly :  mscorlib (dans mscorlib.dll)

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public sealed class Thread : CriticalFinalizerObject, 
	_Thread

Le type Thread expose les membres suivants.

  NomDescription
Méthode publiqueThread(ParameterizedThreadStart)Initialise une nouvelle instance de la classe Thread, en spécifiant un délégué qui permet à un objet d'être passé au thread lorsque le thread est démarré.
Méthode publiquePris en charge par XNA FrameworkThread(ThreadStart)Initialise une nouvelle instance de la classe Thread.
Méthode publiqueThread(ParameterizedThreadStart, Int32)Initialise une nouvelle instance de la classe Thread, en spécifiant un délégué qui permet à un objet d'être passé au thread lorsque le thread est démarré et en spécifiant la taille de pile maximale pour le thread.
Méthode publiquePris en charge par XNA FrameworkThread(ThreadStart, Int32)Initialise une nouvelle instance de la classe Thread, en spécifiant la taille de pile maximale pour le thread.
Début

  NomDescription
Propriété publiqueApartmentState Obsolète. Obtient ou définit l'état de cloisonnement de ce thread.
Propriété publiqueMembre statiqueCurrentContextObtient le contexte en cours dans lequel le thread s'exécute.
Propriété publiquePris en charge par Bibliothèque de classes portableCurrentCultureObtient ou définit la culture du thread en cours.
Propriété publiqueMembre statiqueCurrentPrincipalObtient ou définit l'entité de sécurité en cours du thread (pour une sécurité basée sur les rôles).
Propriété publiqueMembre statiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableCurrentThreadObtient le thread en cours d'exécution.
Propriété publiquePris en charge par Bibliothèque de classes portableCurrentUICultureObtient ou définit la culture actuelle utilisée par le Gestionnaire de ressources pour rechercher des ressources spécifiques à la culture au moment de l'exécution.
Propriété publiqueExecutionContextObtient un objet ExecutionContext qui contient des informations relatives aux divers contextes du thread en cours.
Propriété publiqueIsAliveObtient une valeur indiquant l'état de l'exécution du thread en cours.
Propriété publiquePris en charge par XNA FrameworkIsBackgroundObtient ou définit une valeur indiquant si le thread est ou non un thread d'arrière-plan.
Propriété publiqueIsThreadPoolThreadObtient une valeur indiquant si un thread appartient au pool de threads managés ou non.
Propriété publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableManagedThreadIdObtient un identificateur unique pour le thread managé actuel.
Propriété publiquePris en charge par XNA FrameworkNameObtient ou définit le nom du thread.
Propriété publiquePris en charge par XNA FrameworkPriorityObtient ou définit une valeur indiquant la priorité de planification d'un thread.
Propriété publiqueThreadStateObtient une valeur contenant les états du thread en cours.
Début

  NomDescription
Méthode publiquePris en charge par XNA FrameworkAbort()Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread. L'appel de cette méthode arrête généralement le thread.
Méthode publiquePris en charge par XNA FrameworkAbort(Object)Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread, tout en fournissant des informations d'exception sur l'arrêt du thread. L'appel de cette méthode arrête généralement le thread.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkAllocateDataSlotAlloue sur tous les threads un emplacement de données sans nom. Pour de meilleures performances, utilisez à la place les champs marqués avec l'attribut ThreadStaticAttribute.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkAllocateNamedDataSlotAlloue sur tous les threads un emplacement de données nommé. Pour de meilleures performances, utilisez à la place les champs marqués avec l'attribut ThreadStaticAttribute.
Méthode publiqueMembre statiqueBeginCriticalRegionAvertit un hôte que l'exécution est sur le point d'entrer dans une région de code dans laquelle les effets d'un abandon de thread ou d'une exception non gérée peuvent compromettre d'autres tâches dans le domaine d'application.
Méthode publiqueMembre statiqueBeginThreadAffinityAvertit un hôte que le code managé est sur le point d'exécuter des instructions qui dépendent de l'identité du thread du système d'exploitation physique actuel.
Méthode publiqueDisableComObjectEagerCleanupDésactive le nettoyage automatique des wrappers RCW (Runtime Callable Wrapper) pour le thread actuel.
Méthode publiqueMembre statiqueEndCriticalRegionAvertit un hôte que l'exécution est sur le point d'entrer dans une région de code dans laquelle les effets d'un abandon de thread ou d'une exception non gérée sont limités à la tâche en cours.
Méthode publiqueMembre statiqueEndThreadAffinityAvertit un hôte que le code managé a terminé l'exécution des instructions qui dépendent de l'identité du thread du système d'exploitation physique actuel.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode publiqueMembre statiquePris en charge par XNA FrameworkFreeNamedDataSlotÉlimine l'association entre un nom et un emplacement pour tous les threads du processus. Pour de meilleures performances, utilisez à la place les champs marqués avec l'attribut ThreadStaticAttribute.
Méthode publiqueGetApartmentStateRetourne une valeur ApartmentState qui indique l'état de cloisonnement.
Méthode publiqueGetCompressedStack Obsolète. Retourne un objet CompressedStack qui peut être utilisé afin de capturer la pile pour le thread en cours.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkGetDataRécupère la valeur de l'emplacement spécifié sur le thread en cours, dans le domaine en cours du thread en cours. Pour de meilleures performances, utilisez à la place les champs marqués avec l'attribut ThreadStaticAttribute.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkGetDomainRetourne le domaine en cours dans lequel le thread en cours est en cours d'exécution.
Méthode publiqueMembre statiqueGetDomainIDRetourne un identificateur unique de domaine d'application.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableGetHashCodeRetourne un code de hachage pour le thread en cours. (Substitue Object.GetHashCode().)

Dans XNA Framework 3.0, ce membre est hérité de Object.GetHashCode().


Dans Bibliothèque de classes portable Bibliothèque de classes portable, ce membre est hérité de Object.GetHashCode().
Méthode publiqueMembre statiquePris en charge par XNA FrameworkGetNamedDataSlotRecherche un emplacement de données nommé. Pour de meilleures performances, utilisez à la place les champs marqués avec l'attribut ThreadStaticAttribute.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueInterruptInterrompt un thread dont l'état est WaitSleepJoin.
Méthode publiquePris en charge par XNA FrameworkJoin()Bloque le thread appelant jusqu'à ce qu'un thread s'arrête, tout en continuant d'exécuter le pompage COM et SendMessage standard.
Méthode publiquePris en charge par XNA FrameworkJoin(Int32)Bloque le thread appelant jusqu'à ce qu'un thread s'arrête ou que la durée spécifiée soit écoulée, tout en continuant d'exécuter le pompage COM et SendMessage standard.
Méthode publiqueJoin(TimeSpan)Bloque le thread appelant jusqu'à ce qu'un thread s'arrête ou que la durée spécifiée soit écoulée, tout en continuant d'exécuter le pompage COM et SendMessage standard.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableMemoryBarrierSynchronise l'accès à la mémoire comme suit : le processeur qui exécute le thread actuel ne peut pas réorganiser les instructions de sorte que les accès à la mémoire antérieurs à l'appel de MemoryBarrier s'exécutent après les accès à la mémoire postérieurs à l'appel de MemoryBarrier.
Méthode publiqueMembre statiqueResetAbortAnnule un Abort demandé pour le thread en cours.
Méthode publiqueResume Obsolète. Reprend un thread qui a été suspendu.
Méthode publiqueSetApartmentStateDéfinit l'état de cloisonnement d'un thread avant qu'il ne soit démarré.
Méthode publiqueSetCompressedStack Obsolète. Applique une CompressedStack capturée au thread en cours.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkSetDataDéfinit les données dans l'emplacement spécifié sur le thread en cours d'exécution, dans le domaine en cours de ce thread. Pour meilleure performance, les champs d'utilisation ont marqué à la place avec l'attribut ThreadStaticAttribute.
Méthode publiquePris en charge par XNA FrameworkSetProcessorAffinityDans le .NET Compact Framework for Xbox 360, définit l'affinité du processeur pour un thread managé. L'affinité du processeur détermine les processeurs sur lesquels s'exécute un thread.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkSleep(Int32)Suspends the current thread for the specified number of milliseconds.
Méthode publiqueMembre statiqueSleep(TimeSpan)Suspends the current thread for the specified amount of time.
Méthode publiqueMembre statiqueSpinWaitProvoque l'attente d'un thread pendant le nombre de fois défini par le paramètre iterations.
Méthode publiquePris en charge par XNA FrameworkStart()Provoque le changement, par le système d'exploitation, de l'état de l'instance actuelle en ThreadState.Running.
Méthode publiqueStart(Object)Entraîne la modification, par le système d'exploitation, de l'état de l'instance actuelle en ThreadState.Running, et fournit éventuellement un objet contenant les données que la méthode exécutée par le thread doit utiliser.
Méthode publiqueSuspend Obsolète. Suspend le thread ou, s'il est déjà suspendu, n'a aucun effet.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToStringRetourne une chaîne qui représente l'objet actif. (Hérité de Object.)
Méthode publiqueTrySetApartmentStateDéfinit l'état de cloisonnement d'un thread avant qu'il ne soit démarré.
Méthode publiqueMembre statiqueVolatileRead(Byte)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Double)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Int16)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Int32)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Int64)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(IntPtr)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Object)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(SByte)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(Single)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(UInt16)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(UInt32)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(UInt64)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileRead(UIntPtr)Lit la valeur d'un champ. Il s'agit de la dernière valeur écrite par un processeur d'un ordinateur, quel que soit le nombre de processeurs ou l'état du cache de processeurs.
Méthode publiqueMembre statiqueVolatileWrite(Byte, Byte)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Double, Double)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Int16, Int16)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Int32, Int32)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Int64, Int64)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(IntPtr, IntPtr)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Object, Object)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(SByte, SByte)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(Single, Single)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(UInt16, UInt16)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(UInt32, UInt32)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(UInt64, UInt64)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueVolatileWrite(UIntPtr, UIntPtr)Écrit immédiatement une valeur dans un champ de sorte que la valeur est visible pour tous les processeurs de l'ordinateur.
Méthode publiqueMembre statiqueYieldOblige le thread appelant à céder l'exécution à un autre thread prêt à s'exécuter sur le processeur actuel. Le système d'exploitation sélectionne le thread auquel l'exécution doit être cédée.
Début

  NomDescription
Implémentation d'interface expliciteMéthode privée_Thread.GetIDsOfNamesMappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.
Implémentation d'interface expliciteMéthode privée_Thread.GetTypeInfoRécupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.
Implémentation d'interface expliciteMéthode privée_Thread.GetTypeInfoCountRécupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).
Implémentation d'interface expliciteMéthode privée_Thread.InvokeFournit l'accès aux propriétés et aux méthodes exposées par un objet.
Début

Un processus peut créer un ou plusieurs threads pour exécuter une partie du code du programme qui lui est associée. Utilisez un délégué ThreadStart ou le délégué ParameterizedThreadStart pour spécifier le code du programme exécuté par un thread. Le délégué ParameterizedThreadStart vous permet de passer des données à la procédure de thread.

Pendant sa durée de vie, un thread présente toujours un ou plusieurs des états définis par ThreadState. Un niveau de priorité de planification, défini par ThreadPriority, peut être demandé pour un thread, mais il n'est pas garanti qu'il sera respecté par le système d'exploitation.

GetHashCode fournit l'identification des threads managés. Durant la durée de vie de votre thread, celui-ci n'entrera pas en conflit avec la valeur d'un autre thread, quel que soit le domaine d'application dont cette valeur provient.

RemarqueRemarque

Un ThreadId de système d'exploitation n'a pas de relation fixe avec un thread managé, car un hôte non managé peut contrôler la relation entre les threads managés et non managés. Plus particulièrement, un hôte élaboré peut utiliser l'API hébergeant le CLR pour planifier de nombreux threads par rapport au même thread de système d'exploitation, ou pour déplacer un thread managé entre les différents threads de système d'exploitation.

Il n'est pas nécessaire de conserver une référence à un objet Thread une fois que vous avez démarré le thread. Le thread continue à s'exécuter jusqu'à la fin de la procédure de thread.

Remarque importanteImportant

À partir du .NET Framework 4, le comportement de quelques constructeurs de thread est modifié : seul le code d'un niveau de confiance suffisant peut affecter à la taille de pile maximale une valeur qui est supérieure à la taille de pile par défaut (1 mégaoctet). Si une plus grande valeur est spécifiée quand le code s'exécute avec la confiance partielle, la plus grande valeur est ignorée et la taille de la pile par défaut est utilisée. Aucune exception n'est levée. Le code à tout niveau de confiance peut affecter à la taille de pile maximale une valeur qui est moins que la taille de pile par défaut.

L'exemple de code suivant illustre une fonctionnalité simple de thread.


using System;
using System.Threading;

// Simple threading scenario:  Start a static method running
// on a second thread.
public class ThreadExample {
    // The ThreadProc method is called when the thread starts.
    // It loops ten times, writing to the console and yielding 
    // the rest of its time slice each time, and then ends.
    public static void ThreadProc() {
        for (int i = 0; i < 10; i++) {
            Console.WriteLine("ThreadProc: {0}", i);
            // Yield the rest of the time slice.
            Thread.Sleep(0);
        }
    }

    public static void Main() {
        Console.WriteLine("Main thread: Start a second thread.");
        // The constructor for the Thread class requires a ThreadStart 
        // delegate that represents the method to be executed on the 
        // thread.  C# simplifies the creation of this delegate.
        Thread t = new Thread(new ThreadStart(ThreadProc));

        // Start ThreadProc.  Note that on a uniprocessor, the new 
        // thread does not get any processor time until the main thread 
        // is preempted or yields.  Uncomment the Thread.Sleep that 
        // follows t.Start() to see the difference.
        t.Start();
        //Thread.Sleep(0);

        for (int i = 0; i < 4; i++) {
            Console.WriteLine("Main thread: Do some work.");
            Thread.Sleep(0);
        }

        Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.");
        t.Join();
        Console.WriteLine("Main thread: ThreadProc.Join has returned.  Press Enter to end program.");
        Console.ReadLine();
    }
}


Ce code produit un résultat analogue à celui-ci :

 [VB, C++, C#]
 Main thread: Start a second thread.
 Main thread: Do some work.
 ThreadProc: 0
 Main thread: Do some work.
 ThreadProc: 1
 Main thread: Do some work.
 ThreadProc: 2
 Main thread: Do some work.
 ThreadProc: 3
 Main thread: Call Join(), to wait until ThreadProc ends.
 ThreadProc: 4
 ThreadProc: 5
 ThreadProc: 6
 ThreadProc: 7
 ThreadProc: 8
 ThreadProc: 9
 Main thread: ThreadProc.Join has returned.  Press Enter to end program.

.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ce type est thread-safe.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft