Freigeben über


ThreadStateException-Klasse

Die Ausnahme, die ausgelöst wird, wenn sich ein Thread in einem für den Methodenaufruf ungültigen ThreadState befindet.

Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ThreadStateException
    Inherits SystemException
'Usage
Dim instance As ThreadStateException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class ThreadStateException : SystemException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class ThreadStateException : public SystemException
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class ThreadStateException extends SystemException
SerializableAttribute 
ComVisibleAttribute(true) 
public class ThreadStateException extends SystemException

Hinweise

Ein Thread befindet sich nach seiner Erstellung in mindestens einem der ThreadState-Zustände, bis er beendet wird. Die ThreadStateException wird von Methoden ausgelöst, die die angeforderte Operation aufgrund des aktuellen Threadzustands nicht ausführen können. Beispielsweise wird beim Versuch, einen abgebrochenen Thread erneut zu starten, indem Start für einen beendeten Thread aufgerufen wird, eine ThreadStateException ausgelöst.

ThreadStateException verwendet HRESULT COR_E_ THREADSTATE mit dem Wert 0x80131520.

Eine Liste der anfänglichen Eigenschaftenwerte für eine Instanz von ThreadStateException finden Sie unter ThreadStateException-Konstruktoren.

Beispiel

Im folgenden Beispiel wird ein Fehler veranschaulicht, der bewirkt, dass das System eine ThreadStateException auslöst.

Imports System
Imports System.Threading

Public Class ThreadWork
   
   Public Shared Sub DoWork()
      Console.WriteLine("Working thread...")
   End Sub 'DoWork
End Class 'ThreadWork

Class ThreadStateTest
   
   Public Shared Sub Main()
      Dim myThreadDelegate As New ThreadStart(AddressOf ThreadWork.DoWork)
      Dim myThread As New Thread(myThreadDelegate)
      myThread.Start()
      Thread.Sleep(0)
      Console.WriteLine("In main. Attempting to restart myThread.")
      Try
         myThread.Start()
      Catch e As ThreadStateException
         Console.WriteLine("Caught: {0}", e.Message)
      End Try
   End Sub 'Main
End Class 'ThreadStateTest
using System;
using System.Threading;

public class ThreadWork 
{
public static void DoWork()
   {
   Console.WriteLine("Working thread..."); 
   }
}

class ThreadStateTest
{
public static void Main()
   {
   ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
   Thread myThread = new Thread(myThreadDelegate);
   myThread.Start();
   Thread.Sleep(0);
   Console.WriteLine("In main. Attempting to restart myThread.");
   try 
      {
      myThread.Start();
      }
      catch(ThreadStateException e)
      {
      Console.WriteLine("Caught: {0}", e.Message);
      }
   }
}
using namespace System;
using namespace System::Threading;
ref class ThreadWork
{
public:
   static void DoWork()
   {
      Console::WriteLine( "Working thread..." );
   }

};

int main()
{
   ThreadStart^ myThreadDelegate = gcnew ThreadStart( ThreadWork::DoWork );
   Thread^ myThread = gcnew Thread( myThreadDelegate );
   myThread->Start();
   Thread::Sleep( 0 );
   Console::WriteLine( "In main. Attempting to restart myThread." );
   try
   {
      myThread->Start();
   }
   catch ( ThreadStateException^ e ) 
   {
      Console::WriteLine( "Caught: {0}", e->Message );
   }

}
import System.*;
import System.Threading.*;

public class ThreadWork
{
    public static void DoWork()
    {
        Console.WriteLine("Working thread...");
    } //DoWork
} //ThreadWork

class ThreadStateTest
{
    public static void main(String[] args)
    {
        ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
        System.Threading.Thread myThread =
            new System.Threading.Thread(myThreadDelegate);
        myThread.Start();
        System.Threading.Thread.Sleep(0);
        Console.WriteLine("In main. Attempting to restart myThread.");
        try {
            myThread.Start();
        }
        catch (ThreadStateException e) {
            Console.WriteLine("Caught: {0}", e.get_Message());
        }
    } //main
} //ThreadStateTest

Dieser Code erzeugt die folgende Ausgabe:

 In main. Attempting to restart myThread.
     Working thread...
     Caught: Thread is running or terminated. Cannot restart.

Vererbungshierarchie

System.Object
   System.Exception
     System.SystemException
      System.Threading.ThreadStateException

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

ThreadStateException-Member
System.Threading-Namespace
Thread-Klasse
ThreadState-Enumeration
Exception

Weitere Ressourcen

Verwaltetes und nicht verwaltetes Threading
Behandeln und Auslösen von Ausnahmen