Thread.GetApartmentState Methode

Definitie

Retourneert een ApartmentState waarde die de status van het appartement aangeeft.

public:
 System::Threading::ApartmentState GetApartmentState();
public System.Threading.ApartmentState GetApartmentState();
member this.GetApartmentState : unit -> System.Threading.ApartmentState
Public Function GetApartmentState () As ApartmentState

Retouren

Een van de ApartmentState waarden die de appartementsstatus van de beheerde thread aangeven. De standaardwaarde is Unknown.

Voorbeelden

In het volgende codevoorbeeld ziet u de GetApartmentState, SetApartmentStateen TrySetApartmentState methoden. In het codevoorbeeld wordt een thread gemaakt. Voordat de thread wordt gestart, GetApartmentState geeft u de initiƫle ApartmentState.Unknown status weer en SetApartmentState wijzigt u de status in ApartmentState.STA. De TrySetApartmentState methode retourneert false vervolgens wanneer wordt geprobeerd de status ApartmentState.MTA te wijzigen in omdat de appartementsstatus al is ingesteld. Als dezelfde bewerking met was geprobeerd SetApartmentState, InvalidOperationException zou zijn gegooid.

Nadat de thread is gestart, wordt de TrySetApartmentState methode opnieuw gebruikt. Deze keer wordt het gegooid ThreadStateException omdat de thread al is gestart.

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

let threadProc () = Thread.Sleep 2000

let t = Thread threadProc
printfn $"Before setting apartment state: {t.GetApartmentState()}"

t.SetApartmentState ApartmentState.STA
printfn $"After setting apartment state: {t.GetApartmentState()}"

let result = t.TrySetApartmentState ApartmentState.MTA
printfn $"Try to change state: {result}"

t.Start()

Thread.Sleep 500

try
    t.TrySetApartmentState ApartmentState.STA |> ignore
with :? ThreadStateException ->
    printfn "ThreadStateException occurs if apartment state is set after starting thread."

t.Join()

// 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.
Imports System.Threading

Module Example

    Sub Main()
 
        Dim t As New Thread(AddressOf ThreadProc)
        Console.WriteLine("Before setting apartment state: {0}", _
            t.GetApartmentState())

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

        Dim result As Boolean = _
            t.TrySetApartmentState(ApartmentState.MTA)
        Console.WriteLine("Try to change state: {0}", result)

        t.Start()

        Thread.Sleep(500)

        Try
            t.TrySetApartmentState(ApartmentState.STA)
        Catch ex As ThreadStateException
            Console.WriteLine("ThreadStateException occurs " & _
                "if apartment state is set after starting thread.")
        End Try

        t.Join()
    End Sub

    Sub ThreadProc()
        Thread.Sleep(2000)
    End Sub
End Module

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

Opmerkingen

Deze methode vervangt de eigenschap, samen met de SetApartmentState methode en de TrySetApartmentStateApartmentState methode.

Van toepassing op