Auf Englisch lesen

Freigeben über


Thread.ApartmentState Eigenschaft

Definition

Achtung

The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.

Achtung

The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.

Ruft den Apartmentzustand dieses Threads ab oder legt diesen fest.

C#
[System.Obsolete("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false)]
public System.Threading.ApartmentState ApartmentState { get; set; }
C#
[System.Obsolete("The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.")]
public System.Threading.ApartmentState ApartmentState { get; set; }
C#
public System.Threading.ApartmentState ApartmentState { get; set; }

Eigenschaftswert

Einer der ApartmentState-Werte. Der Anfangswert ist Unknown.

Attribute

Ausnahmen

Es wird versucht, diese Eigenschaft in einen Zustand zu versetzen, der kein gültiger Apartmentzustand ist, d. h. in einen anderen Zustand als Singlethread-Apartment (STA) oder Multithread-Apartment (MTA).

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie der Apartmentstatus eines Threads festgelegt wird.

C#
using System;
using System.Threading;

class ApartmentTest
{
    static void Main()
    {
        Thread newThread = 
            new Thread(new ThreadStart(ThreadMethod));
        newThread.SetApartmentState(ApartmentState.MTA);

        Console.WriteLine("ThreadState: {0}, ApartmentState: {1}", 
            newThread.ThreadState, newThread.GetApartmentState());

        newThread.Start();

        // Wait for newThread to start and go to sleep.
        Thread.Sleep(300);
        try
        {
            // This causes an exception since newThread is sleeping.
            newThread.SetApartmentState(ApartmentState.STA);
        }
        catch(ThreadStateException stateException)
        {
            Console.WriteLine("\n{0} caught:\n" +
                "Thread is not in the Unstarted or Running state.", 
                stateException.GetType().Name);
            Console.WriteLine("ThreadState: {0}, ApartmentState: {1}",
                newThread.ThreadState, newThread.GetApartmentState());
        }
    }

    static void ThreadMethod()
    {
        Thread.Sleep(1000);
    }
}

Hinweise

Die ApartmentState-Eigenschaft ist veraltet. Die nicht veralteten Alternativen sind die GetApartmentState Methode zum Abrufen des Wohnungszustands und die SetApartmentState Methode zum Festlegen des Wohnungszustands.

In .NET Framework Versionen 1.0 und 1.1 markiert die ApartmentState -Eigenschaft einen Thread, um anzugeben, dass er in einem Singlethread- oder Multithread-Apartment ausgeführt wird. Diese Eigenschaft kann festgelegt werden, wenn sich der Thread im UnstartedRunning Oder-Zustand befindet. Sie kann jedoch nur einmal für einen Thread festgelegt werden. Wenn die -Eigenschaft nicht festgelegt wurde, wird zurückgegeben Unknown.

Ein Versuch, mit der ApartmentState -Eigenschaft den Apartmentstatus eines Threads festzulegen, dessen Apartmentstatus bereits festgelegt wurde, wird ignoriert. In diesem Fall löst die SetApartmentState -Methode jedoch ein aus InvalidOperationException .

Wichtig

In .NET Framework Version 2.0 werden neue Threads so initialisiert, als ApartmentState.MTA ob ihr Wohnungsstatus noch nicht festgelegt wurde, bevor sie gestartet werden. Der Hauptanwendungsthread wird standardmäßig mit ApartmentState.MTA initialisiert. Sie können den Hauptanwendungsthread nicht mehr auf festlegen, ApartmentState.STA indem Sie die System.Threading.ApartmentState Eigenschaft in der ersten Codezeile festlegen. Verwenden Sie stattdessen STAThreadAttribute.

In .NET Framework Version 2.0 können Sie das COM-Threadingmodell für eine C++-Anwendung mithilfe der Linkeroption /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) angeben.

Gilt für:

Produkt Versionen (Veraltet)
.NET (Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9)
.NET Framework 1.1 (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)

Weitere Informationen