Aracılığıyla paylaş


Thread.ApartmentState Özellik

Tanım

Dikkat

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

Dikkat

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

Dikkat

Deprecated in favor of GetApartmentState, SetApartmentState and TrySetApartmentState.

Bu iş parçacığının Grup durumunu alır veya ayarlar.

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

Özellik Değeri

ApartmentState

ApartmentStateDeğerlerden biri. İlk değer Unknown .

Öznitelikler

Özel durumlar

Bu özelliği geçerli bir küme durumu (tek iş parçacıklı küme ( ) veya çok iş parçacıklı küme ( ) dışında bir durum olarak ayarlamaya STA MTA çalışıldı.

Örnekler

Aşağıdaki kod örneği, bir iş parçacığının küme durumunun nasıl ayar olduğunu gösterir.

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

Açıklamalar

ApartmentStateÖzellik artık kullanılmıyor. Kullanımdan kaldırılmayan alternatifler, grup durumunu GetApartmentState alma yöntemi ve SetApartmentState Grup durumunu ayarlama yöntemidir.

.NET Framework sürüm 1,0 ve 1,1 ' de, ApartmentState özelliği tek iş parçacıklı veya çok iş parçacıklı grupta yürütüleceğini göstermek için bir iş parçacığını işaretler. İş parçacığı Unstarted veya iş parçacığı durumunda olduğunda bu özellik ayarlanabilir Running ; ancak, bir iş parçacığı için yalnızca bir kez ayarlanabilir. Özellik ayarlanmamışsa, döndürür Unknown .

Özelliği, zaten küme durumu ayarlanmış bir iş parçacığının küme durumunu ayarlamak için kullanma girişimi ApartmentState yoksayılır. Ancak yöntemi SetApartmentState bu durumda bir InvalidOperationException atar.

Önemli

Sürüm .NET Framework 2.0'da, yeni iş parçacıkları başlatılmadan önce kendi evlerinin ApartmentState.MTA durumu ayarlanmaz gibi başlatılır. Ana uygulama iş parçacığı varsayılan olarak ApartmentState.MTA olarak başlatılır. Artık ilk kod satırı özelliğini ApartmentState.STA ayarerek ana uygulama iş System.Threading.ApartmentState parçacığını olarak ayaramazsiniz. Bunun yerine STAThreadAttribute kullanın.

Bu .NET Framework 2.0'da, /CLRTHREADATTRIBUTE (CLR İş Parçacığı Özniteliğini Ayarla) bağlantıleyici seçeneğini kullanarak bir C++ uygulaması için COM iş parçacığı modeli belirtebilirsiniz.

Şunlara uygulanır

Ayrıca bkz.