.NET Framework Class Library
ThreadAbortException.ExceptionState Property
Gets an object that contains application-specific information related to the thread abort.
Assembly: mscorlib (in mscorlib.dll)
Syntax
Visual Basic
Public ReadOnly Property ExceptionState As Object
C#
public Object ExceptionState { get; }
Visual C++
public: property Object^ ExceptionState { Object^ get (); }
F#
member ExceptionState : Object
Remarks
The object returned by this property is specified through the stateInfo parameter of the Abort method. The exact content and usage of this object is application defined; it is typically used to convey information that is meaningful to the thread being aborted.
Examples
The following code example shows how to pass information to a thread that is being aborted.
Visual Basic
Imports System Imports System.Threading Public Class Test <MTAThread> _ Shared Sub Main() Dim newThread As New Thread(AddressOf TestMethod) newThread.Start() Thread.Sleep(1000) ' Abort newThread. Console.WriteLine("Main aborting new thread.") newThread.Abort("Information from Main.") ' Wait for the thread to terminate. newThread.Join() Console.WriteLine("New thread terminated - Main exiting.") End Sub Shared Sub TestMethod() Try While True Console.WriteLine("New thread running.") Thread.Sleep(1000) End While Catch abortException As ThreadAbortException Console.WriteLine( _ CType(abortException.ExceptionState, String)) End Try End Sub End Class
C#
using System; using System.Threading; class Test { public static void Main() { Thread newThread = new Thread(new ThreadStart(TestMethod)); newThread.Start(); Thread.Sleep(1000); // Abort newThread. Console.WriteLine("Main aborting new thread."); newThread.Abort("Information from Main."); // Wait for the thread to terminate. newThread.Join(); Console.WriteLine("New thread terminated - Main exiting."); } static void TestMethod() { try { while(true) { Console.WriteLine("New thread running."); Thread.Sleep(1000); } } catch(ThreadAbortException abortException) { Console.WriteLine((string)abortException.ExceptionState); } } }
Visual C++
using namespace System; using namespace System::Threading; ref class Test { private: Test(){} public: static void TestMethod() { try { while ( true ) { Console::WriteLine( "New thread running." ); Thread::Sleep( 1000 ); } } catch ( ThreadAbortException^ abortException ) { Console::WriteLine( dynamic_cast<String^>(abortException->ExceptionState) ); } } }; int main() { Thread^ newThread = gcnew Thread( gcnew ThreadStart( &Test::TestMethod ) ); newThread->Start(); Thread::Sleep( 1000 ); // Abort newThread. Console::WriteLine( "Main aborting new thread." ); newThread->Abort( "Information from main." ); // Wait for the thread to terminate. newThread->Join(); Console::WriteLine( "New thread terminated - main exiting." ); }
Version Information
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also