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

Définition

Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. L'appel de cette méthode arrête généralement le thread.Calling this method usually terminates the thread.

Surcharges

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

Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. L'appel de cette méthode arrête généralement le thread.Calling this method usually terminates the thread.

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

Déclenche une ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread, tout en fournissant des informations sur les exceptions relatives à l'arrêt du thread.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. L'appel de cette méthode arrête généralement le thread.Calling this method usually terminates the thread.

Remarques

Important

La Thread.Abort méthode doit être utilisée avec précaution.The Thread.Abort method should be used with caution. En particulier lorsque vous l’appelez pour abandonner un thread autre que le thread actuel, vous ne savez pas quel code a été exécuté ou n’a pas ThreadAbortException pu s’exécuter lorsque le est levé, et vous ne pouvez pas non plus vous assurer de l’état de votre application ou de l’état de l’application ou de l’utilisateur. responsable de la préservation.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. Par exemple, l' Thread.Abort appel de peut empêcher des constructeurs statiques de s’exécuter ou d’empêcher la libération de ressources non managées.For example, calling Thread.Abort may prevent static constructors from executing or prevent the release of unmanaged resources.

Notez que la Thread.Abort méthode n’est pas prise en charge sur .net core.Note that the Thread.Abort method is not supported on .NET Core.

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

Déclenche ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread.Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. L'appel de cette méthode arrête généralement le thread.Calling this method usually terminates the thread.

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

Exceptions

.NET Core uniquement : ce membre n’est pas pris en charge..NET Core only: This member is not supported.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Le thread en cours d’abandon est actuellement suspendu.The thread that is being aborted is currently suspended.

Remarques

Quand cette méthode est appelée sur un thread, le système lève une ThreadAbortException exception dans le thread pour l’abandonner.When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortExceptionest une exception spéciale qui peut être interceptée par le code de l’application, mais qui est levée à nouveau catch à la ResetAbort fin du bloc, sauf si est appelé.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. ResetAbortannule la demande d’abandon et empêche le ThreadAbortException d’arrêter le thread.ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. Les blocs finally non exécutés sont exécutés avant l’abandon du thread.Unexecuted finally blocks are executed before the thread is aborted.

Notes

Quand un thread appelle Abort sur lui-même, l’effet est semblable à la levée d' ThreadAbortException une exception ; le se produit immédiatement et le résultat est prévisible.When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. Toutefois, si un thread appelle Abort sur un autre thread, l’abandon interrompt tout code en cours d’exécution.However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. Il y a également un risque qu’un constructeur statique soit abandonné.There is also a chance that a static constructor could be aborted. Dans de rares cas, cela peut empêcher la création d’instances de cette classe dans ce domaine d’application.In rare cases, this might prevent instances of that class from being created in that application domain. Dans les versions 1,0 et 1,1 de .NET Framework, il est possible que le thread abandonne pendant finally l’exécution d’un bloc, auquel cas finally le bloc est abandonné.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.

Il n’est pas garanti que le thread s’interrompt immédiatement, ou du tout.The thread is not guaranteed to abort immediately, or at all. Cette situation peut se produire si un thread effectue une quantité illimitée de calculs dans les finally blocs appelés dans le cadre de la procédure d’annulation, ce qui retarde indéfiniment l’abandon.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. Pour attendre qu’un thread soit abandonné, vous pouvez appeler la Join méthode sur le thread après avoir appelé la Abort méthode, mais il n’y a aucune garantie que l’attente se terminera.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.

Notes

Le thread qui appelle Abort peut se bloquer si le thread qui est abandonné se trouve dans une région de code protégée, telle qu’un catch bloc, finally un bloc ou une région d’exécution restreinte.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. Si le thread qui appelle Abort maintient un verrou requis par le thread abandonné, un interblocage peut se produire.If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

Si Abort est appelé sur un thread qui n’a pas été démarré, le thread s’arrête Start quand est appelé.If Abort is called on a thread that has not been started, the thread will abort when Start is called. Si Abort est appelé sur un thread bloqué ou en veille, le thread est interrompu puis abandonné.If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

Si Abort est appelé sur un thread qui a été suspendu, une ThreadStateException est levée dans le thread qui a Abortappelé, AbortRequested et est ajouté à ThreadState la propriété du thread en cours d’abandon.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. Un ThreadAbortException n’est pas levé dans le thread suspendu Resume tant que n’est pas appelé.A ThreadAbortException is not thrown in the suspended thread until Resume is called.

Si Abort est appelé sur un thread managé pendant qu’il exécute du code non managé, une ThreadAbortException n’est pas levée tant que le thread n’est pas retourné au code managé.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.

Si deux appels à Abort sont effectués en même temps, il est possible pour un appel de définir les informations d’État et l’autre appel d’exécuter Abortle.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. Toutefois, une application ne peut pas détecter cette situation.However, an application cannot detect this situation.

Une Abort fois que est appelé sur un thread, l’état du thread comprend AbortRequested.After Abort is invoked on a thread, the state of the thread includes AbortRequested. Une fois que le thread s’est arrêté suite à un appel réussi à Abort, l’état du thread Stoppeddevient.After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. Avec des autorisations suffisantes, un thread qui est la cible Abort d’un peut annuler l’abandon ResetAbort à l’aide de la méthode.With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. Pour obtenir un exemple qui illustre l' ResetAbort appel de la méthode ThreadAbortException , consultez la classe.For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

Sécurité

SecurityPermission
pour les opérations avancées sur les threads.for advanced operations on threads. Énumération associée : ControlThread.Associated enumeration: ControlThread.

Voir aussi

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

Déclenche une ThreadAbortException dans le thread sur lequel l'appel a lieu pour commencer le processus d'arrêt du thread, tout en fournissant des informations sur les exceptions relatives à l'arrêt du thread.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. L'appel de cette méthode arrête généralement le thread.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)

Paramètres

stateInfo
Object Object Object Object

Objet contenant des informations spécifiques à l'application, telles que l'état, qui peuvent être utilisées par le thread en cours d'abandon.An object that contains application-specific information, such as state, which can be used by the thread being aborted.

Exceptions

.NET Core uniquement : ce membre n’est pas pris en charge..NET Core only: This member is not supported.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Le thread en cours d’abandon est actuellement suspendu.The thread that is being aborted is currently suspended.

Exemples

L’exemple de code suivant montre comment passer des informations à un thread en cours d’abandon.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

Remarques

Quand cette méthode est appelée sur un thread, le système lève une ThreadAbortException exception dans le thread pour l’abandonner.When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortExceptionest une exception spéciale qui peut être interceptée par le code de l’application, mais qui est levée à nouveau catch à la ResetAbort fin du bloc, sauf si est appelé.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. ResetAbortannule la demande d’abandon et empêche le ThreadAbortException d’arrêter le thread.ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. Les blocs finally non exécutés sont exécutés avant l’abandon du thread.Unexecuted finally blocks are executed before the thread is aborted.

Notes

Quand un thread appelle Abort sur lui-même, l’effet est semblable à la levée d' ThreadAbortException une exception ; le se produit immédiatement et le résultat est prévisible.When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. Toutefois, si un thread appelle Abort sur un autre thread, l’abandon interrompt tout code en cours d’exécution.However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. Il y a un risque qu’un constructeur statique soit abandonné.There is a chance that a static constructor could be aborted. Dans de rares cas, cela peut empêcher la création d’instances de cette classe dans ce domaine d’application.In rare cases, this might prevent instances of that class from being created in that application domain. Dans les versions 1,0 et 1,1 de .NET Framework, il est possible que le thread abandonne pendant finally l’exécution d’un bloc, auquel cas finally le bloc est abandonné.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.

Il n’est pas garanti que le thread s’interrompt immédiatement, ou du tout.The thread is not guaranteed to abort immediately, or at all. Cette situation peut se produire si un thread effectue une quantité illimitée de calculs dans les finally blocs appelés dans le cadre de la procédure d’annulation, ce qui retarde indéfiniment l’abandon.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. Pour attendre la fin d’un thread, vous pouvez appeler la Join méthode sur le thread après avoir appelé la Abort méthode, mais il n’existe aucune garantie que l’attente se termine.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.

Notes

Le thread qui appelle Abort peut se bloquer si le thread qui est abandonné se trouve dans une région de code protégée, telle qu’un catch bloc, finally un bloc ou une région d’exécution restreinte.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. Si le thread qui appelle Abort maintient un verrou requis par le thread abandonné, un interblocage peut se produire.If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

Si Abort est appelé sur un thread qui n’a pas été démarré, le thread s’arrête Start quand est appelé.If Abort is called on a thread that has not been started, the thread will abort when Start is called. Si Abort est appelé sur un thread bloqué ou en veille, le thread est interrompu puis abandonné.If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

Si Abort est appelé sur un thread qui a été suspendu, une ThreadStateException est levée dans le thread qui a Abortappelé, AbortRequested et est ajouté à ThreadState la propriété du thread en cours d’abandon.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. Un ThreadAbortException n’est pas levé dans le thread suspendu Resume tant que n’est pas appelé.A ThreadAbortException is not thrown in the suspended thread until Resume is called.

Si Abort est appelé sur un thread managé pendant qu’il exécute du code non managé, une ThreadAbortException n’est pas levée tant que le thread n’est pas retourné au code managé.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.

Si deux appels à Abort sont effectués en même temps, il est possible pour un appel de définir les informations d’État et l’autre appel d’exécuter Abortle.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. Toutefois, une application ne peut pas détecter cette situation.However, an application cannot detect this situation.

Une Abort fois que est appelé sur un thread, l’état du thread comprend AbortRequested.After Abort is invoked on a thread, the state of the thread includes AbortRequested. Une fois que le thread s’est arrêté suite à un appel réussi à Abort, l’état du thread Stoppeddevient.After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. Avec des autorisations suffisantes, un thread qui est la cible Abort d’un peut annuler l’abandon ResetAbort à l’aide de la méthode.With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. Pour obtenir un exemple qui illustre l' ResetAbort appel de la méthode ThreadAbortException , consultez la classe.For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

Sécurité

SecurityPermission
pour les opérations avancées sur les threads.for advanced operations on threads. Énumération associée : ControlThread.Associated enumeration: ControlThread.

Voir aussi

S’applique à