Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Thread.GetApartmentState-Methode: ()

 

Veröffentlicht: Oktober 2016

Gibt einen ApartmentState-Wert zurück, der den Apartmentzustand angibt.

Namespace:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

public ApartmentState GetApartmentState()

Rückgabewert

Type: System.Threading.ApartmentState

Einer der ApartmentState-Werte, der den Apartmentzustand des verwalteten Threads angibt. Die Standardeinstellung ist ApartmentState.Unknown.

Diese Methode zusammen mit der SetApartmentState -Methode und der TrySetApartmentState Methode ersetzt die ApartmentState Eigenschaft.

Das folgende Codebeispiel veranschaulicht die GetApartmentState, SetApartmentState, und TrySetApartmentState Methoden. Im Codebeispiel wird einen Thread erstellt. Vor dem Starten des Threads GetApartmentState zeigt die anfängliche ApartmentState.Unknown Zustand und SetApartmentState ändert den Zustand auf ApartmentState.STA. Die TrySetApartmentState dann Methodenrückgabe false beim Versuch, den Status zu ändern ApartmentState.MTA da der Apartmentzustand bereits festgelegt ist. Bei der Ausführung des gleichen Vorgangs mit SetApartmentState, InvalidOperationException würde ausgelöst.

Nachdem der Thread gestartet wird, die TrySetApartmentState Methode erneut verwendet wird. Sie löst dieses Mal ThreadStateException da der Thread bereits gestartet wurde.

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

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: