Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Thread.GetApartmentState (Método)

Devuelve un valor ApartmentState que indica el estado de tipo apartamento.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

public ApartmentState GetApartmentState()

Valor devuelto

Tipo: System.Threading.ApartmentState
Uno de los valores de ApartmentState que indica el estado de tipo apartamento del subproceso administrado. El valor predeterminado es ApartmentState.Unknown.

Este método, junto con el método SetApartmentState y el método TrySetApartmentState, reemplaza la propiedad ApartmentState.

En el ejemplo de código siguiente se muestran los métodos GetApartmentState, SetApartmentState y TrySetApartmentState. En el ejemplo de código se crea un subproceso. Antes de que se inicie el subproceso, GetApartmentState muestra el estado inicial deApartmentState.Unknown y SetApartmentState cambia el estado a ApartmentState.STA. El método TrySetApartmentState devuelve false al intentar cambiar el estado a ApartmentState.MTA, porque el estado de apartamento ya está establecido. Si se hubiera intentado la misma operación SetApartmentState, se habría iniciado una InvalidOperationException.

Una vez que se inicia el subproceso, se vuelve a utilizar el método TrySetApartmentState. Ahora inicia la excepción ThreadStateException, porque el subproceso ya se ha iniciado.


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

Compatible con: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft