Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Thread.Abort-Methode: (Object)

 

Veröffentlicht: Oktober 2016

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. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet.

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

[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]
public void Abort(
	object stateInfo
)

Parameter

stateInfo
Type: System.Object

Ein Objekt, das anwendungsspezifische Informationen enthält (z. B. über den Zustand), die vom abgebrochenen Thread verwendet werden können.

Exception Condition
SecurityException

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

ThreadStateException

Der abgebrochene Thread ist derzeit angehalten.

Wenn diese Methode in einem Thread aufgerufen wird, löst das System eine ThreadAbortException im Thread aus, um ihn abzubrechen. ThreadAbortException ist eine besondere Ausnahme, die vom Anwendungscode abgefangen werden kann, jedoch wird erneut ausgelöst, am Ende der catch blockiert, sofern ResetAbort aufgerufen wird. ResetAbort Bricht die Anforderung zum Abbrechen und verhindert, dass die ThreadAbortException den Thread beendet. Nicht ausgeführte finally -Blöcke werden vor dem Abbruch des Threads ausgeführt.

System_CAPS_noteHinweis

Beim Aufruf Abort auf sich selbst, entspricht dies dem Auslösen einer Ausnahme, die ThreadAbortException wird sofort ausgeführt, und das Ergebnis ist vorhersehbar. Jedoch, wenn ein Thread ruft Abort auf einem anderen Thread, unterbricht der Abbruch allen ausgeführten Code. Es ist möglich, dass ein statischer Konstruktor abgebrochen werden konnte. In seltenen Fällen kann dies verhindern, dass Instanzen dieser Klasse in der Anwendungsdomäne erstellt wird. In .NET Framework, Version 1.0 und 1.1, besteht die Möglichkeit der Thread während einer finally Block ausgeführt wird, in diesem Fall die finally abgebrochen wird.

Der Thread wird nicht unbedingt sofort oder überhaupt abgebrochen. Diese Situation kann auftreten, wenn ein Thread eine unbegrenzte Berechnung in führt die finally Blöcke, die im Rahmen des Abbruchvorgangs, der Abbruch dadurch unbegrenzt verzögert aufgerufen werden. Um zu warten, bis ein Thread abgebrochen wurde, rufen Sie die Join Methode für den Thread nach dem Aufruf der Abort -Methode, aber es gibt keine Garantie, die der Wartevorgang beendet wird.

System_CAPS_noteHinweis

Der aufrufende Thread Abort möglicherweise blockiert, wenn der Thread, der abgebrochen wird in einen geschützten Codebereich, z. B. eine catch Block finally Blockieren oder eingeschränkten Ausführungsbereich. Wenn der Thread aufruft, Abort eine Sperre, die der abgebrochene Thread erfordert, kann ein Deadlock auftreten, enthält.

Wenn Abort wird aufgerufen, auf einen Thread, der noch nicht gestartet wurde, wird der Thread abgebrochen Wenn Start aufgerufen wird. Wenn Abort aufgerufen wird in einem Thread, der blockiert ist oder im Ruhezustand wird der Thread unterbrochen und dann abgebrochen.

Wenn Abort für einen Thread, der angehalten wurde, aufgerufen wird eine ThreadStateException ausgelöst, in dem Thread, Abort, und AbortRequested wird hinzugefügt, die ThreadState -Eigenschaft des abgebrochenen Thread. Ein ThreadAbortException wird im angehaltenen Thread erst ausgelöst, wenn Resume aufgerufen wird.

Wenn Abort für einen verwalteten Thread aufgerufen wird, während dieser nicht verwalteten Code ausführt, wird ein ThreadAbortException nicht ausgelöst, bis der Thread zu verwaltetem Code zurückkehrt.

Wenn zwei Aufrufe Abort stammen gleichzeitig, es ist möglich, einen Aufruf die Zustandsinformationen festgelegt und der andere Aufruf zum Ausführen der Abort. Eine Anwendung kann diese Situation jedoch nicht erkennen.

Nach dem Abort wird aufgerufen, auf einen Thread, der Zustand des Threads enthält AbortRequested. Wenn der Thread nach einem erfolgreichen Aufruf von beendet wurde Abort, der Zustand des Threads wird geändert, um Stopped. Ein Thread, der ist mit den entsprechenden Berechtigungen das Ziel einer Abort können abbrechen, diesen Vorgang unter Verwendung der ResetAbort Methode. Ein Beispiel für die Aufrufen der ResetAbort -Methode finden Sie unter der ThreadAbortException Klasse.

Im folgenden Codebeispiel wird veranschaulicht, wie Informationen an einen Thread übergeben, die abgebrochen wird.

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

SecurityPermission

for advanced operations on threads. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlThread.

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: