Thread.Abort Thread.Abort Thread.Abort Thread.Abort Method

Definition

Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.Calling this method usually terminates the thread.

Überlädt

Abort() Abort() Abort() Abort()

Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.Calling this method usually terminates the thread.

Abort(Object) Abort(Object) Abort(Object) Abort(Object)

Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen. Gleichzeitig werden Ausnahmeinformationen über das Beenden des Threads bereitgestellt.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread while also providing exception information about the thread termination. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.Calling this method usually terminates the thread.

Hinweise

Wichtig

Die Thread.Abort -Methode sollte mit Bedacht verwendet werden.The Thread.Abort method should be used with caution. Vor allem, wenn Sie einen anderen Thread als den aktuellen Thread abbrechen, wissen Sie nicht, welcher Code ausgeführt wurde oder nicht ausgeführt werden konnte, wenn der ThreadAbortException ausgelöst wird. Sie können auch nicht sicher sein, dass der Zustand der Anwendung oder die Anwendung und der Benutzer Zustand verantwortlich für die Beibehaltung von.Particularly when you call it to abort a thread other than the current thread, you do not know what code has executed or failed to execute when the ThreadAbortException is thrown, nor can you be certain of the state of your application or any application and user state that it is responsible for preserving. Beispielsweise kann durch Thread.Abort Aufrufen von verhindert werden, dass statische Konstruktoren ausgeführt werden, oder die Freigabe nicht verwalteter Ressourcen wird verhindert.For example, calling Thread.Abort may prevent static constructors from executing or prevent the release of unmanaged resources.

Beachten Sie, Thread.Abort dass die-Methode in .net Core nicht unterstützt wird.Note that the Thread.Abort method is not supported on .NET Core.

Abort() Abort() Abort() Abort()

Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.Calling this method usually terminates the thread.

public:
 void Abort();
public void Abort ();
member this.Abort : unit -> unit
Public Sub Abort ()

Ausnahmen

Nur .NET Core: Dieser Member wird nicht unterstützt..NET Core only: This member is not supported.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Der abgebrochene Thread ist derzeit angehalten.The thread that is being aborted is currently suspended.

Hinweise

Wenn diese Methode in einem Thread aufgerufen wird, löst das System eine ThreadAbortException im Thread aus, um Sie abzubrechen.When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortExceptionist eine besondere Ausnahme, die vom Anwendungscode abgefangen werden kann, jedoch am Ende des catch -Blocks erneut ausgelöst wird, es sei denn ResetAbort , wird aufgerufen.ThreadAbortException is a special exception that can be caught by application code, but is re-thrown at the end of the catch block unless ResetAbort is called. ResetAbortbricht die Abbruch Anforderung ThreadAbortException ab und verhindert, dass der Thread beendet wird.ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. Nicht ausgeführte finally Blöcke werden ausgeführt, bevor der Thread abgebrochen wird.Unexecuted finally blocks are executed before the thread is aborted.

Hinweis

Wenn ein Thread auf Abort sich selbst aufruft, ähnelt der Effekt dem Auslösen einer Ausnahme. der ThreadAbortException erfolgt sofort, und das Ergebnis ist vorhersagbar.When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. Wenn jedoch ein Thread in einem Abort anderen Thread aufruft, unterbricht der Abbruch den Code, der ausgeführt wird.However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. Außerdem besteht die Möglichkeit, dass ein statischer Konstruktor abgebrochen werden kann.There is also a chance that a static constructor could be aborted. In seltenen Fällen kann dies verhindern, dass Instanzen dieser Klasse in dieser Anwendungsdomäne erstellt werden.In rare cases, this might prevent instances of that class from being created in that application domain. In den .NET Framework Versionen 1,0 und 1,1 besteht die Möglichkeit, dass der Thread abgebrochen wird, während finally ein-Block ausgeführt wird. in diesem finally Fall wird der-Block abgebrochen.In the .NET Framework versions 1.0 and 1.1, there is a chance the thread could abort while a finally block is running, in which case the finally block is aborted.

Es ist nicht garantiert, dass der Thread sofort oder überhaupt abgebrochen wird.The thread is not guaranteed to abort immediately, or at all. Diese Situation kann eintreten, wenn ein Thread eine unbegrenzte Menge an Berechnung in den finally Blöcken ausführt, die im Rahmen der Abbruch Prozedur aufgerufen werden, wodurch der Abbruch unbegrenzt verzögert wird.This situation can occur if a thread does an unbounded amount of computation in the finally blocks that are called as part of the abort procedure, thereby indefinitely delaying the abort. Um zu warten, bis ein Thread abgebrochen wurde, können Join Sie die-Methode für den Thread Abort aufrufen, nachdem die-Methode aufgerufen wurde, aber es gibt keine Garantie, dass der Warte Vorgang beendet wird.To wait until a thread has aborted, you can call the Join method on the thread after calling the Abort method, but there is no guarantee the wait will end.

Hinweis

Der Thread, der Abort aufruft, kann blockieren, wenn sich der abgebrochene Thread in einem geschützten Bereich von Code befindet, z catch . b finally . in einem Block-, Block-oder eingeschränkten Ausführungs Bereich.The thread that calls Abort might block if the thread that is being aborted is in a protected region of code, such as a catch block, finally block, or constrained execution region. Wenn der Thread, der Abort aufruft, eine Sperre enthält, die der abgebrochene Thread erfordert, kann ein Deadlock auftreten.If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

Wenn Abort für einen Thread aufgerufen wird, der noch nicht gestartet wurde, wird der Thread abgebrochen Start , wenn aufgerufen wird.If Abort is called on a thread that has not been started, the thread will abort when Start is called. Wenn Abort für einen Thread aufgerufen wird, der blockiert ist oder sich im Ruhezustand befindet, wird der Thread unterbrochen und dann abgebrochen.If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

Wenn Abort für einen Thread aufgerufen wird, der angehalten wurde, ThreadStateException wird in dem Thread, der aufgerufen Aborthat, AbortRequested eine ausgelöst und der ThreadState -Eigenschaft des abzugebrochenen Threads hinzugefügt.If Abort is called on a thread that has been suspended, a ThreadStateException is thrown in the thread that called Abort, and AbortRequested is added to the ThreadState property of the thread being aborted. Eine ThreadAbortException wird im angehaltenen Thread erst ausgelöst Resume , wenn aufgerufen wird.A ThreadAbortException is not thrown in the suspended thread until Resume is called.

Wenn Abort für einen verwalteten Thread aufgerufen wird, während er nicht verwalteten Code ausführt, wird ThreadAbortException eine erst ausgelöst, wenn der Thread an verwalteten Code zurückgegeben wird.If Abort is called on a managed thread while it is executing unmanaged code, a ThreadAbortException is not thrown until the thread returns to managed code.

Wenn zwei Aufrufe Abort von gleichzeitig erfolgen, ist es möglich, dass ein Aufruf die Zustandsinformationen und den anderen Aufruf von zum AbortAusführen von einrichtet.If two calls to Abort come at the same time, it is possible for one call to set the state information and the other call to execute the Abort. Diese Situation kann jedoch von einer Anwendung nicht erkannt werden.However, an application cannot detect this situation.

Nachdem Abort in einem Thread aufgerufen wurde, enthält AbortRequestedder Zustand des Threads.After Abort is invoked on a thread, the state of the thread includes AbortRequested. Nachdem der Thread aufgrund eines erfolgreichen Aufrufes Abortbeendet wurde, wird der Zustand des Threads in Stoppedgeändert.After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. Mit ausreichenden Berechtigungen Abort kann ein Thread, der das Ziel eines ist, den Abbruch mithilfe der ResetAbort -Methode abbrechen.With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. Ein Beispiel, das den Aufruf der ResetAbort -Methode veranschaulicht, ThreadAbortException finden Sie unter der-Klasse.For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

Sicherheit

SecurityPermission
für erweiterte Vorgänge für Threads.for advanced operations on threads. Zugeordnete Enumeration: ControlThreadAssociated enumeration: ControlThread.

Siehe auch

Abort(Object) Abort(Object) Abort(Object) Abort(Object)

Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen. Gleichzeitig werden Ausnahmeinformationen über das Beenden des Threads bereitgestellt.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread while also providing exception information about the thread termination. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.Calling this method usually terminates the thread.

public:
 void Abort(System::Object ^ stateInfo);
public void Abort (object stateInfo);
member this.Abort : obj -> unit
Public Sub Abort (stateInfo As Object)

Parameter

stateInfo
Object Object Object Object

Ein Objekt, das anwendungsspezifische Informationen enthält (z. B. über den Zustand), die vom abgebrochenen Thread verwendet werden können.An object that contains application-specific information, such as state, which can be used by the thread being aborted.

Ausnahmen

Nur .NET Core: Dieser Member wird nicht unterstützt..NET Core only: This member is not supported.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Der abgebrochene Thread ist derzeit angehalten.The thread that is being aborted is currently suspended.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Informationen an einen Thread übergeben werden, der abgebrochen wird.The following code example shows how to pass information to a thread that is being aborted.

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." );
}

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);
        }
    }
}
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

Hinweise

Wenn diese Methode in einem Thread aufgerufen wird, löst das System eine ThreadAbortException im Thread aus, um Sie abzubrechen.When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortExceptionist eine besondere Ausnahme, die vom Anwendungscode abgefangen werden kann, jedoch am Ende des catch -Blocks erneut ausgelöst wird, es sei denn ResetAbort , wird aufgerufen.ThreadAbortException is a special exception that can be caught by application code, but is re-thrown at the end of the catch block unless ResetAbort is called. ResetAbortbricht die Abbruch Anforderung ThreadAbortException ab und verhindert, dass der Thread beendet wird.ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. Nicht ausgeführte finally Blöcke werden ausgeführt, bevor der Thread abgebrochen wird.Unexecuted finally blocks are executed before the thread is aborted.

Hinweis

Wenn ein Thread auf Abort sich selbst aufruft, ähnelt der Effekt dem Auslösen einer Ausnahme. der ThreadAbortException erfolgt sofort, und das Ergebnis ist vorhersagbar.When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. Wenn jedoch ein Thread in einem Abort anderen Thread aufruft, unterbricht der Abbruch den Code, der ausgeführt wird.However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. Es besteht die Möglichkeit, dass ein statischer Konstruktor abgebrochen werden kann.There is a chance that a static constructor could be aborted. In seltenen Fällen kann dies verhindern, dass Instanzen dieser Klasse in dieser Anwendungsdomäne erstellt werden.In rare cases, this might prevent instances of that class from being created in that application domain. In den .NET Framework Versionen 1,0 und 1,1 besteht die Möglichkeit, dass der Thread abgebrochen wird, während finally ein-Block ausgeführt wird. in diesem finally Fall wird der-Block abgebrochen.In the .NET Framework versions 1.0 and 1.1, there is a chance the thread could abort while a finally block is running, in which case the finally block is aborted.

Es ist nicht garantiert, dass der Thread sofort oder überhaupt abgebrochen wird.The thread is not guaranteed to abort immediately, or at all. Diese Situation kann eintreten, wenn ein Thread eine unbegrenzte Menge an Berechnung in den finally Blöcken ausführt, die im Rahmen der Abbruch Prozedur aufgerufen werden, wodurch der Abbruch unbegrenzt verzögert wird.This situation can occur if a thread does an unbounded amount of computation in the finally blocks that are called as part of the abort procedure, thereby indefinitely delaying the abort. Um zu warten, bis ein Thread abgebrochen wurde, können Join Sie die-Methode für den Thread Abort aufrufen, nachdem die-Methode aufgerufen wurde, aber es gibt keine Garantie dafür, dass der Warte Vorgang beendet wird.To wait until a thread has aborted, you can call the Join method on the thread after calling the Abort method, but there is no guarantee that the wait will end.

Hinweis

Der Thread, der Abort aufruft, kann blockieren, wenn sich der abgebrochene Thread in einem geschützten Bereich von Code befindet, z catch . b finally . in einem Block-, Block-oder eingeschränkten Ausführungs Bereich.The thread that calls Abort might block if the thread that is being aborted is in a protected region of code, such as a catch block, finally block, or constrained execution region. Wenn der Thread, der Abort aufruft, eine Sperre enthält, die der abgebrochene Thread erfordert, kann ein Deadlock auftreten.If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

Wenn Abort für einen Thread aufgerufen wird, der noch nicht gestartet wurde, wird der Thread abgebrochen Start , wenn aufgerufen wird.If Abort is called on a thread that has not been started, the thread will abort when Start is called. Wenn Abort für einen Thread aufgerufen wird, der blockiert ist oder sich im Ruhezustand befindet, wird der Thread unterbrochen und dann abgebrochen.If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

Wenn Abort für einen Thread aufgerufen wird, der angehalten wurde, ThreadStateException wird in dem Thread, der aufgerufen Aborthat, AbortRequested eine ausgelöst und der ThreadState -Eigenschaft des abzugebrochenen Threads hinzugefügt.If Abort is called on a thread that has been suspended, a ThreadStateException is thrown in the thread that called Abort, and AbortRequested is added to the ThreadState property of the thread being aborted. Eine ThreadAbortException wird im angehaltenen Thread erst ausgelöst Resume , wenn aufgerufen wird.A ThreadAbortException is not thrown in the suspended thread until Resume is called.

Wenn Abort für einen verwalteten Thread aufgerufen wird, während er nicht verwalteten Code ausführt, wird ThreadAbortException eine erst ausgelöst, wenn der Thread an verwalteten Code zurückgegeben wird.If Abort is called on a managed thread while it is executing unmanaged code, a ThreadAbortException is not thrown until the thread returns to managed code.

Wenn zwei Aufrufe Abort von gleichzeitig erfolgen, ist es möglich, dass ein Aufruf die Zustandsinformationen und den anderen Aufruf von zum AbortAusführen von einrichtet.If two calls to Abort come at the same time, it is possible for one call to set the state information and the other call to execute the Abort. Diese Situation kann jedoch von einer Anwendung nicht erkannt werden.However, an application cannot detect this situation.

Nachdem Abort in einem Thread aufgerufen wurde, enthält AbortRequestedder Zustand des Threads.After Abort is invoked on a thread, the state of the thread includes AbortRequested. Nachdem der Thread aufgrund eines erfolgreichen Aufrufes Abortbeendet wurde, wird der Zustand des Threads in Stoppedgeändert.After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. Mit ausreichenden Berechtigungen Abort kann ein Thread, der das Ziel eines ist, den Abbruch mithilfe der ResetAbort -Methode abbrechen.With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. Ein Beispiel, das den Aufruf der ResetAbort -Methode veranschaulicht, ThreadAbortException finden Sie unter der-Klasse.For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

Sicherheit

SecurityPermission
für erweiterte Vorgänge für Threads.for advanced operations on threads. Zugeordnete Enumeration: ControlThreadAssociated enumeration: ControlThread.

Siehe auch

Gilt für: