Thread.Sleep Méthode
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.
Suspend le thread actuel pour la durée spécifiée.
Surcharges
| Nom | Description |
|---|---|
| Sleep(Int32) |
Suspend le thread actuel pour le nombre spécifié de millisecondes. |
| Sleep(TimeSpan) |
Suspend le thread actuel pour la durée spécifiée. |
Sleep(Int32)
Suspend le thread actuel pour le nombre spécifié de millisecondes.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep(int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
Paramètres
- millisecondsTimeout
- Int32
Nombre de millisecondes pour lesquelles le thread est suspendu. Si la valeur de l’argument millisecondsTimeout est zéro, le thread abandonne le reste de sa tranche de temps à n’importe quel thread de priorité égale prêt à s’exécuter. S’il n’y a pas d’autres threads de priorité égale qui sont prêts à s’exécuter, l’exécution du thread actuel n’est pas suspendue.
Exceptions
La valeur de délai d’attente est négative et n’est pas égale à Infinite.
Exemples
L’exemple suivant utilise la Sleep méthode pour bloquer le thread principal de l’application.
using System;
using System.Threading;
class Example
{
static void Main()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(2000);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
open System.Threading
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep 2000
printfn "Main thread exits."
// This example produces the following output:
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Main thread exits.
Imports System.Threading
Class Example
Shared Sub Main()
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(2000)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
Remarques
Le thread ne sera pas planifié pour l’exécution par le système d’exploitation pendant la durée spécifiée. Cette méthode modifie l’état du thread à inclure WaitSleepJoin.
Vous pouvez spécifier Timeout.Infinite que le millisecondsTimeout paramètre suspend indéfiniment le thread. Toutefois, nous vous recommandons d’utiliser d’autres System.Threading classes telles que Mutex, Monitor, EventWaitHandleou Semaphore plutôt pour synchroniser des threads ou gérer des ressources.
L’horloge système passe à un rythme spécifique appelé résolution de l’horloge. Le délai d’expiration réel peut ne pas être exactement le délai d’expiration spécifié, car le délai d’expiration spécifié est ajusté pour coïncider avec les cycles d’horloge. Pour plus d’informations sur la résolution des horloges et l’heure d’attente, consultez la fonction Sleep à partir des API système Windows.
Cette méthode n’effectue pas de pompe COM standard et SendMessage.
Note
Si vous devez dormir sur un thread qui a STAThreadAttribute, mais que vous souhaitez effectuer une pompe COM et SendMessage standard, envisagez d’utiliser l’une des surcharges de la Join méthode qui spécifie un intervalle de délai d’attente.
S’applique à
Sleep(TimeSpan)
Suspend le thread actuel pour la durée spécifiée.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep(TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
Paramètres
- timeout
- TimeSpan
Durée pendant laquelle le thread est suspendu. Si la valeur de l’argument timeout est Zero, le thread abandonne le reste de sa tranche de temps à n’importe quel thread de priorité égale prêt à s’exécuter. S’il n’y a pas d’autres threads de priorité égale qui sont prêts à s’exécuter, l’exécution du thread actuel n’est pas suspendue.
Exceptions
La valeur est timeout négative et n’est pas égale à en millisecondes, ou est supérieure à InfiniteInt32.MaxValue millisecondes.
Exemples
L’exemple suivant utilise la surcharge de méthode Sleep(TimeSpan) pour bloquer le thread principal de l’application cinq fois, pendant deux secondes chaque fois.
using System;
using System.Threading;
class Example
{
static void Main()
{
TimeSpan interval = new TimeSpan(0, 0, 2);
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(interval);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
open System
open System.Threading
let interval = TimeSpan(0, 0, 2)
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep interval
printfn "Main thread exits."
// This example produces the following output:
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Main thread exits.
Imports System.Threading
Class Example
Shared Sub Main()
Dim interval As New TimeSpan(0, 0, 2)
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(interval)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
Remarques
Le thread ne sera pas planifié pour l’exécution par le système d’exploitation pendant la durée spécifiée. Cette méthode modifie l’état du thread à inclure WaitSleepJoin.
Vous pouvez spécifier Timeout.InfiniteTimeSpan que le timeout paramètre suspend indéfiniment le thread. Toutefois, nous vous recommandons d’utiliser d’autres System.Threading classes telles que Mutex, Monitor, EventWaitHandleou Semaphore plutôt pour synchroniser des threads ou gérer des ressources.
Cette surcharge d’utilisation du nombre total de Sleep millisecondes entières en timeout. Les millisecondes fractionnaires sont ignorées.
Cette méthode n’effectue pas de pompe COM standard et SendMessage.
Note
Si vous devez dormir sur un thread qui a STAThreadAttribute, mais que vous souhaitez effectuer une pompe COM et SendMessage standard, envisagez d’utiliser l’une des surcharges de la Join méthode qui spécifie un intervalle de délai d’attente.