ThreadInterruptedException Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Exception levée lorsque l'interruption survient alors que Threadest en état d'attente.
public ref class ThreadInterruptedException : SystemException
public class ThreadInterruptedException : SystemException
[System.Serializable]
public class ThreadInterruptedException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ThreadInterruptedException : SystemException
type ThreadInterruptedException = class
inherit SystemException
[<System.Serializable>]
type ThreadInterruptedException = class
inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadInterruptedException = class
inherit SystemException
Public Class ThreadInterruptedException
Inherits SystemException
- Héritage
- Attributs
Exemples
L’exemple de code suivant montre le comportement d’un thread en cours d’exécution lorsqu’il est interrompu et est bloqué par la suite.
using namespace System;
using namespace System::Security::Permissions;
using namespace System::Threading;
ref class StayAwake
{
private:
bool sleepSwitch;
public:
property bool SleepSwitch
{
void set( bool value )
{
sleepSwitch = value;
}
}
StayAwake()
{
sleepSwitch = false;
}
void ThreadMethod()
{
Console::WriteLine( "newThread is executing ThreadMethod." );
while ( !sleepSwitch )
{
// Use SpinWait instead of Sleep to demonstrate the
// effect of calling Interrupt on a running thread.
Thread::SpinWait( 10000000 );
}
try
{
Console::WriteLine( "newThread going to sleep." );
// When newThread goes to sleep, it is immediately
// woken up by a ThreadInterruptedException.
Thread::Sleep( Timeout::Infinite );
}
catch ( ThreadInterruptedException^ /*e*/ )
{
Console::WriteLine( "newThread cannot go to sleep - "
"interrupted by main thread." );
}
}
};
int main()
{
StayAwake^ stayAwake = gcnew StayAwake;
Thread^ newThread = gcnew Thread( gcnew ThreadStart( stayAwake, &StayAwake::ThreadMethod ) );
newThread->Start();
// The following line causes an exception to be thrown
// in ThreadMethod if newThread is currently blocked
// or becomes blocked in the future.
newThread->Interrupt();
Console::WriteLine( "Main thread calls Interrupt on newThread." );
// Then tell newThread to go to sleep.
stayAwake->SleepSwitch = true;
// Wait for newThread to end.
newThread->Join();
}
using System;
using System.Security.Permissions;
using System.Threading;
class ThreadInterrupt
{
static void Main()
{
StayAwake stayAwake = new StayAwake();
Thread newThread =
new Thread(new ThreadStart(stayAwake.ThreadMethod));
newThread.Start();
// The following line causes an exception to be thrown
// in ThreadMethod if newThread is currently blocked
// or becomes blocked in the future.
newThread.Interrupt();
Console.WriteLine("Main thread calls Interrupt on newThread.");
// Tell newThread to go to sleep.
stayAwake.SleepSwitch = true;
// Wait for newThread to end.
newThread.Join();
}
}
class StayAwake
{
bool sleepSwitch = false;
public bool SleepSwitch
{
set{ sleepSwitch = value; }
}
public StayAwake(){}
public void ThreadMethod()
{
Console.WriteLine("newThread is executing ThreadMethod.");
while(!sleepSwitch)
{
// Use SpinWait instead of Sleep to demonstrate the
// effect of calling Interrupt on a running thread.
Thread.SpinWait(10000000);
}
try
{
Console.WriteLine("newThread going to sleep.");
// When newThread goes to sleep, it is immediately
// woken up by a ThreadInterruptedException.
Thread.Sleep(Timeout.Infinite);
}
catch(ThreadInterruptedException e)
{
Console.WriteLine("newThread cannot go to sleep - " +
"interrupted by main thread.");
}
}
}
Option Explicit
Option Strict
Imports System.Security.Permissions
Imports System.Threading
Public Class ThreadInterrupt
<MTAThread> _
Shared Sub Main()
Dim stayAwake As New StayAwake()
Dim newThread As New Thread(AddressOf stayAwake.ThreadMethod)
newThread.Start()
' The following line causes an exception to be thrown
' in ThreadMethod if newThread is currently blocked
' or becomes blocked in the future.
newThread.Interrupt()
Console.WriteLine("Main thread calls Interrupt on newThread.")
' Tell newThread to go to sleep.
stayAwake.SleepSwitch = True
' Wait for newThread to end.
newThread.Join()
End Sub
End Class
Public Class StayAwake
Dim sleepSwitchValue As Boolean = False
WriteOnly Property SleepSwitch As Boolean
Set
sleepSwitchValue = Value
End Set
End Property
Sub New()
End Sub
Sub ThreadMethod()
Console.WriteLine("newThread is executing ThreadMethod.")
While Not sleepSwitchValue
' Use SpinWait instead of Sleep to demonstrate the
' effect of calling Interrupt on a running thread.
Thread.SpinWait(10000000)
End While
Try
Console.WriteLine("newThread going to sleep.")
' When newThread goes to sleep, it is immediately
' woken up by a ThreadInterruptedException.
Thread.Sleep(Timeout.Infinite)
Catch ex As ThreadInterruptedException
Console.WriteLine("newThread cannot go to " & _
"sleep - interrupted by main thread.")
End Try
End Sub
End Class
Remarques
Une fois qu’un thread est créé, il se trouve dans un ou plusieurs ThreadState états jusqu’à ce qu’il soit détruit. L’appel Interrupt lorsqu’un thread est dans l’état WaitSleepJoin entraîne la levée d’un ThreadInterruptedException thread dans le thread cible. Si le thread n’est pas dans l’état WaitSleepJoin , l’exception n’est pas levée tant que le thread n’entre pas dans cet état. Si le thread n'est jamais bloqué, il peut se terminer sans jamais être interrompu.
ThreadInterruptedException utilise le COR_E_THREADINTERRUPTED HRESULT, qui a la valeur 0x80131519.
Pour obtenir la liste des valeurs initiales des propriétés d’une instance de ThreadInterruptedException, consultez le ThreadInterruptedException constructeurs.
Constructeurs
ThreadInterruptedException() |
Initialise une nouvelle instance de la classe ThreadInterruptedException avec des propriétés par défaut. |
ThreadInterruptedException(SerializationInfo, StreamingContext) |
Initialise une nouvelle instance de la classe ThreadInterruptedException avec des données sérialisées. |
ThreadInterruptedException(String) |
Initialise une nouvelle instance de la classe ThreadInterruptedException avec un message d'erreur spécifié. |
ThreadInterruptedException(String, Exception) |
Initialise une nouvelle instance de la classe ThreadInterruptedException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception. |
Propriétés
Data |
Obtient une collection de paires clé/valeur qui fournissent des informations définies par l'utilisateur supplémentaires sur l'exception. (Hérité de Exception) |
HelpLink |
Obtient ou définit un lien vers le fichier d'aide associé à cette exception. (Hérité de Exception) |
HResult |
Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique. (Hérité de Exception) |
InnerException |
Obtient l'instance Exception qui a provoqué l'exception actuelle. (Hérité de Exception) |
Message |
Obtient un message qui décrit l'exception active. (Hérité de Exception) |
Source |
Obtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur. (Hérité de Exception) |
StackTrace |
Obtient une représentation sous forme de chaîne des frames immédiats sur la pile des appels. (Hérité de Exception) |
TargetSite |
Obtient la méthode qui lève l'exception actuelle. (Hérité de Exception) |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetBaseException() |
En cas de substitution dans une classe dérivée, retourne la Exception qui est à l'origine d'une ou de plusieurs exceptions ultérieures. (Hérité de Exception) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetObjectData(SerializationInfo, StreamingContext) |
En cas de substitution dans une classe dérivée, définit SerializationInfo avec des informations sur l'exception. (Hérité de Exception) |
GetType() |
Obtient le type au moment de l'exécution de l'instance actuelle. (Hérité de Exception) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Crée et retourne une chaîne représentant l'exception actuelle. (Hérité de Exception) |
Événements
SerializeObjectState |
Obsolète.
Se produit quand une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées concernant l'exception. (Hérité de Exception) |