Exportar (0) Imprimir
Expandir todo

Thread.ApartmentState (Propiedad)

Actualización: noviembre 2007

NOTA: esta API ya está obsoleta. La alternativa no obsoleta es GetApartmentState(). La alternativa no obsoleta es SetApartmentState(ApartmentState).

Obtiene o establece el estado de apartamento de este subproceso.

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

[ObsoleteAttribute("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", 
	false)]
public ApartmentState ApartmentState { get; set; }
/** @property */
/** @attribute ObsoleteAttribute("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false) */
public ApartmentState get_ApartmentState()
/** @property */
/** @attribute ObsoleteAttribute("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false) */
public  void set_ApartmentState(ApartmentState value)

public function get ApartmentState () : ApartmentState
public function set ApartmentState (value : ApartmentState)

Valor de propiedad

Tipo: System.Threading.ApartmentState
Uno de los valores de ApartmentState. El valor inicial es Unknown.

ExcepciónCondición
ArgumentException

Se ha intentado establecer esta propiedad en un estado que no es un estado de apartamento válido, es decir, un estado distinto al de apartamento de un único subproceso (STA) o apartamento multiproceso (MTA).

En las versiones 1.0 y 1.1 de .NET Framework, la propiedad ApartmentState marca un subproceso para indicar que se ejecutará en un apartamento de un solo proceso o multiproceso. Esta propiedad puede establecerse cuando el subproceso se encuentra en estado Unstarted o Running, pero sólo puede establecerse una vez por subproceso. Si no se ha establecido la propiedad, devuelve Unknown.

ew7b4yzs.alert_caution(es-es,VS.90).gifNota importante:

En la versión 2.0 de .NET Framework, los nuevos subprocesos se inicializan como ApartmentState.MTA si su estado de apartamento no se ha fijado antes de que se inicien. El subproceso de aplicación principal se inicializa de forma predeterminada en ApartmentState.MTA. A partir de ahora, no se puede establecer el subproceso de aplicación principal en ApartmentState.STA estableciendo la propiedad System.Threading.ApartmentState en la primera línea de código. En lugar de ello, utilice el método STAThreadAttribute.

En la versión 2.0 de .NET Framework, puede especificar el modelo de subprocesamiento de COM para una aplicación de C++ utilizando la opción del vinculador /CLRTHREADATTRIBUTE (Establecer el atributo de subproceso de CLR).

En el ejemplo de código siguiente se muestra la forma de establecer el estado de apartamento de un subproceso.

using System;
using System.Threading;

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

        // The following line is ignored since 
        // ApartmentState can only be set once.
        newThread.SetApartmentState(ApartmentState.STA);

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

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


import System.*;
import System.Threading.*;
import System.Threading.Thread;    

class ApartmentTest
{
    public static void main(String[] args)
    {
        Thread newThread = new Thread(new ThreadStart(ThreadMethod));

        newThread.set_ApartmentState(ApartmentState.MTA);

        // The following line is ignored since 
        // ApartmentState can only be set once.
        newThread.set_ApartmentState(ApartmentState.STA);
        Console.WriteLine("ThreadState: {0}, ApartmentState: {1}",
                        newThread.get_ThreadState(),
                        newThread.get_ApartmentState());
        newThread.Start();

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

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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 1.1, 1.0
Obsoleto (advertencia del compilador) en 3.5
Obsoleto (advertencia del compilador) en 3.5 SP1
Obsoleto (advertencia del compilador) en 3.0
Obsoleto (advertencia del compilador) en 3.0 SP1
Obsoleto (advertencia del compilador) en 2.0
Obsoleto (advertencia del compilador) en 2.0 SP1

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft