Thread.ApartmentState Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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.