ApartmentState Výčet

Definice

Určuje stav Threadbytu .

public enum ApartmentState
[System.Serializable]
public enum ApartmentState
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ApartmentState
Dědičnost
ApartmentState
Atributy

Pole

MTA 1

Vytvoří Thread a vstoupí do vícevláknového bytu.

STA 0

Vytvoří Thread se a vstoupí do apartmánu s jedním vláknem.

Unknown 2

Vlastnost ApartmentState nebyla nastavena.

Příklady

Následující příklad kódu ukazuje, jak nastavit stav bytu vlákna.

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);
    }
}

Poznámky

Apartmán je logický kontejner v rámci procesu pro objekty sdílející stejné požadavky na přístup k vláknům. Všechny objekty ve stejném bytě mohou přijímat volání z libovolného vlákna v bytě. .NET Framework nepoužívá apartmány a spravované objekty jsou zodpovědné za použití všech sdílených prostředků bezpečným způsobem.

Vzhledem k tomu, že třídy modelu COM používají apartmány, musí modul CLR (Common Language Runtime) vytvořit a inicializovat byt při volání objektu COM v situaci vzájemné spolupráce modelu COM. Spravované vlákno může vytvořit a zadat jednovláknový byt (STA), který umožňuje pouze jedno vlákno, nebo vícevláknový apartmán (MTA), který obsahuje jedno nebo více vláken. Typ bytu vytvořený nastavením ApartmentState vlastnosti vlákna můžete řídit na jednu z hodnot výčtu ApartmentState . Vzhledem k tomu, že dané vlákno může inicializovat pouze jeden apartmán modelu COM, nelze změnit typ apartmánu po prvním volání nespravovaného kódu.

Další informace najdete v tématech Thread, spravované a nespravované podprocesy a pokročilou interoperabilitu modelu COM.

Platí pro

Viz také