Thread.ThreadState Property
Gets a value containing the states of the current thread.
[Visual Basic] Public ReadOnly Property ThreadState As ThreadState [C#] public ThreadState ThreadState {get;} [C++] public: __property ThreadState get_ThreadState(); [JScript] public function get ThreadState() : ThreadState;
Property Value
One of the ThreadState values indicating the state of the current thread. The initial value is Unstarted.
Remarks
The ThreadState property provides more specific information than the IsAlive property.
Example
[Visual Basic, C#, C++] The following code example demonstrates accessing the ThreadState of a thread.
[Visual Basic] Imports Microsoft.VisualBasic Imports System Imports System.Threading Public Class ApartmentTest Shared Sub Main() Dim newThread As Thread = New Thread(AddressOf ThreadMethod) newThread.ApartmentState = ApartmentState.MTA ' The following line is ignored since ' ApartmentState can only be set once. newThread.ApartmentState = 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.ApartmentState = 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.ApartmentState) End Try End Sub Shared Sub ThreadMethod() Thread.Sleep(1000) End Sub End Class [C#] using System; using System.Threading; class ApartmentTest { static void Main() { Thread newThread = new Thread(new ThreadStart(ThreadMethod)); newThread.ApartmentState = ApartmentState.MTA; // The following line is ignored since // ApartmentState can only be set once. newThread.ApartmentState = 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.ApartmentState = 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.ApartmentState); } } static void ThreadMethod() { Thread.Sleep(1000); } } [C++] #using <mscorlib.dll> using namespace System; using namespace System::Threading; __gc class ApartmentTest { public : static void ThreadMethod() { Thread::Sleep(1000); } }; void main() { Thread* newThread = new Thread(new ThreadStart(0, &ApartmentTest::ThreadMethod)); newThread->ApartmentState = ApartmentState::MTA; // The following line is ignored since // ApartmentState can only be set once. newThread->ApartmentState = ApartmentState::STA; Console::WriteLine(S"ThreadState: {0}, ApartmentState: {1}", __box(newThread->ThreadState)->ToString(), __box(newThread->ApartmentState)->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->ApartmentState = ApartmentState::STA; } catch(ThreadStateException* stateException) { Console::WriteLine(S"\n{0} caught:\n" S"Thread is not in the Unstarted or Running state.", stateException->GetType()->Name); Console::WriteLine(S"ThreadState: {0}, ApartmentState: {1}", __box(newThread->ThreadState)->ToString(), __box(newThread->ApartmentState)->ToString()); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, Common Language Infrastructure (CLI) Standard
See Also
Thread Class | Thread Members | System.Threading Namespace | Thread States