Lire en anglais

Partager via


Thread.GetApartmentState Méthode

Définition

Retourne une valeur ApartmentState qui indique l'état de cloisonnement.

C#
public System.Threading.ApartmentState GetApartmentState ();

Retours

Une des valeurs ApartmentState qui indique l'état de cloisonnement du thread managé. La valeur par défaut est Unknown.

Exemples

L’exemple de code suivant illustre les GetApartmentStateméthodes , SetApartmentStateet TrySetApartmentState . L’exemple de code crée un thread. Avant le démarrage du thread, GetApartmentState affiche l’état initial ApartmentState.Unknown et SetApartmentState remplace l’état par ApartmentState.STA. La TrySetApartmentState méthode retourne false ensuite lors de la tentative de modification de l’état en ApartmentState.MTA , car l’état d’appartement est déjà défini. Si la même opération avait été tentée avec SetApartmentState, InvalidOperationException aurait été levée.

Une fois le thread démarré, la TrySetApartmentState méthode est à nouveau utilisée. Cette fois, il lève ThreadStateException , car le thread a déjà été démarré.

C#
using System;
using System.Threading;

class Example
{
    public static void Main()
    {
        Thread t = new Thread(ThreadProc);
        Console.WriteLine("Before setting apartment state: {0}",
            t.GetApartmentState());

        t.SetApartmentState(ApartmentState.STA);
        Console.WriteLine("After setting apartment state: {0}",
            t.GetApartmentState());

        bool result = t.TrySetApartmentState(ApartmentState.MTA);
        Console.WriteLine("Try to change state: {0}", result);

        t.Start();

        Thread.Sleep(500);

        try
        {
            t.TrySetApartmentState(ApartmentState.STA);
        }
        catch (ThreadStateException)
        {
            Console.WriteLine("ThreadStateException occurs " +
                "if apartment state is set after starting thread.");
        }

        t.Join();
    }

    public static void ThreadProc()
    {
        Thread.Sleep(2000);
    }
}

/* This code example produces the following output:

Before setting apartment state: Unknown
After setting apartment state: STA
Try to change state: False
ThreadStateException occurs if apartment state is set after starting thread.
 */

Remarques

Cette méthode, ainsi que la SetApartmentState méthode et la TrySetApartmentState méthode, remplacent la ApartmentState propriété .

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1