다음을 통해 공유


Thread.ApartmentState 속성

정의

주의

The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.

주의

The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.

주의

Deprecated in favor of GetApartmentState, SetApartmentState and TrySetApartmentState.

이 스레드의 아파트 상태를 가져오거나 설정합니다.

public:
 property System::Threading::ApartmentState ApartmentState { System::Threading::ApartmentState get(); void set(System::Threading::ApartmentState value); };
[System.Obsolete("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false)]
public System.Threading.ApartmentState ApartmentState { get; set; }
[System.Obsolete("The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.")]
public System.Threading.ApartmentState ApartmentState { get; set; }
public System.Threading.ApartmentState ApartmentState { get; set; }
[System.Obsolete("Deprecated in favor of GetApartmentState, SetApartmentState and TrySetApartmentState.")]
public System.Threading.ApartmentState ApartmentState { get; set; }
[<System.Obsolete("The ApartmentState property has been deprecated.  Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.", false)>]
member this.ApartmentState : System.Threading.ApartmentState with get, set
[<System.Obsolete("The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead.")>]
member this.ApartmentState : System.Threading.ApartmentState with get, set
member this.ApartmentState : System.Threading.ApartmentState with get, set
[<System.Obsolete("Deprecated in favor of GetApartmentState, SetApartmentState and TrySetApartmentState.")>]
member this.ApartmentState : System.Threading.ApartmentState with get, set
Public Property ApartmentState As ApartmentState

속성 값

ApartmentState

ApartmentState 값 중 하나입니다. 초기 값은 Unknown입니다.

특성

예외

이 속성을 올바르지 않은 아파트 상태[단일 스레드 아파트(STA) 또는 다중 스레드 아파트(MTA) 이외의 상태]로 설정하려고 했습니다.

예제

다음 코드 예제에서는 스레드의 아파트 상태를 설정 하는 방법을 보여 줍니다.

using namespace System;
using namespace System::Threading;
ref class ApartmentTest
{
public:
   static void ThreadMethod()
   {
      Thread::Sleep( 1000 );
   }

};

int main()
{
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( &ApartmentTest::ThreadMethod ) );
   newThread->SetApartmentState(ApartmentState::MTA);
   
   Console::WriteLine( "ThreadState: {0}, ApartmentState: {1}", newThread->ThreadState.ToString(), newThread->GetApartmentState().ToString() );
   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.ToString(), newThread->GetApartmentState().ToString() );
   }

}
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);
    }
}
Imports System.Threading

Public Class ApartmentTest

    <MTAThread> _
    Shared Sub Main()
    
        Dim newThread As Thread = New Thread(AddressOf 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 stateException As ThreadStateException
            Console.WriteLine(vbCrLf & "{0} caught:" & vbCrLf & _
                "Thread is not In the Unstarted or Running state.", _
                stateException.GetType().Name)
            Console.WriteLine("ThreadState: {0}, ApartmentState: " & _
                "{1}", newThread.ThreadState, newThread.GetApartmentState())
        End Try

    End Sub

    Shared Sub ThreadMethod()
        Thread.Sleep(1000)
    End Sub

End Class

설명

ApartmentState속성은 사용 되지 않습니다. 사용 되지 않는 대안은 아파트 상태를 검색 하는 메서드와 GetApartmentState SetApartmentState 아파트 상태를 설정 하는 메서드입니다.

.NET Framework 버전 1.0 및 1.1에서 속성은 ApartmentState 단일 스레드 또는 다중 스레드 아파트에서 실행 될 것임을 나타내도록 스레드를 표시 합니다. 스레드가 또는 스레드 상태에 있는 경우이 속성을 설정할 수 있지만 Unstarted Running 스레드에 대해 한 번만 설정할 수 있습니다. 속성이 설정 되지 않은 경우을 반환 Unknown 합니다.

속성을 사용 하 여 ApartmentState 아파트 상태가 이미 설정 된 스레드의 아파트 상태를 설정 하려는 시도는 무시 됩니다. 그러나 SetApartmentState 이 경우에 메서드는을 throw InvalidOperationException 합니다.

중요

.NET Framework 버전 2.0에서 새 스레드는 ApartmentState.MTA 해당 아파트 상태가 시작 되기 전에 설정 되지 않은 것 처럼 초기화 됩니다. 기본 애플리케이션 스레드가 초기화가 ApartmentState.MTA 기본적으로 합니다. 기본 애플리케이션 스레드를 더 이상 설정할 수 없습니다 ApartmentState.STA 설정 하 여는 System.Threading.ApartmentState 코드의 첫 번째 줄에는 속성입니다. 대신를 사용 STAThreadAttribute 합니다.

.NET Framework 버전 2.0에서는 /CLRTHREADATTRIBUTE (CLR 스레드 특성 설정) 링커 옵션을 사용 하 여 c + + 응용 프로그램에 대 한 COM 스레딩 모델을 지정할 수 있습니다.

적용 대상

추가 정보