Thread.Sleep Méthode

Définition

Suspend le thread actuel pendant la durée spécifiée.Suspends the current thread for the specified amount of time.

Surcharges

Sleep(Int32)

Suspend le thread actuel pendant le nombre spécifié de millisecondes.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan)

Suspend le thread actuel pendant la durée spécifiée.Suspends the current thread for the specified amount of time.

Sleep(Int32)

Suspend le thread actuel pendant le nombre spécifié de millisecondes.Suspends the current thread for the specified number of milliseconds.

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 pendant lesquelles le thread est suspendu.The number of milliseconds for which the thread is suspended. Si la valeur de l'argument millisecondsTimeout est égale à zéro, le thread abandonne le reste de sa tranche de temps à n'importe quel thread de priorité égale prêt à être exécuté.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. S'il n'existe pas d'autres threads de priorité égale prêts à être exécutés, l'exécution du thread actuel n'est pas suspendue.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Exceptions

La valeur du délai d’attente est négative et n’est pas égale à Infinite.The time-out value is negative and is not equal to Infinite.

Exemples

L’exemple suivant utilise la méthode Sleep pour bloquer le thread principal de l’application.The following example uses the Sleep method to block the application's main thread.

using namespace System;
using namespace System::Threading;

int 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.
 */
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.
 */
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 être exécuté par le système d’exploitation pendant la durée spécifiée.The thread will not be scheduled for execution by the operating system for the amount of time specified. Cette méthode modifie l’état du thread pour inclure WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Vous pouvez spécifier Timeout.Infinite pour le paramètre millisecondsTimeout pour suspendre indéfiniment le thread.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. Toutefois, nous vous recommandons d’utiliser d’autres classes System.Threading, telles que Mutex, Monitor, EventWaitHandle ou Semaphore pour synchroniser les threads ou gérer les ressources.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

L’horloge système passe à une fréquence spécifique appelée résolution de l’horloge.The system clock ticks at a specific rate called the clock resolution. Le délai d’expiration réel peut ne pas correspondre exactement au délai spécifié, car le délai d’attente spécifié est ajusté pour coïncider avec les battements d’horloge.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. Pour plus d’informations sur la résolution de l’horloge et le temps d’attente, consultez la rubrique relative à la fonction Sleep .For more information on clock resolution and the waiting time, see the Sleep function topic. Cette méthode appelle la fonction Sleep à partir des API système Windows.This method calls the Sleep function from the Windows system APIs.

Cette méthode n’effectue pas de pompage COM et SendMessage standard.This method does not perform standard COM and SendMessage pumping.

Notes

Si vous devez vous mettre en veille sur un thread qui a STAThreadAttribute, mais que vous souhaitez effectuer un pompage COM et SendMessage standard, envisagez d’utiliser l’une des surcharges de la méthode Join qui spécifie un intervalle de délai d’attente.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Sleep(TimeSpan)

Suspend le thread actuel pendant la durée spécifiée.Suspends the current thread for the specified amount of time.

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.The amount of time for which the thread is suspended. Si la valeur de l’argument millisecondsTimeout est Zero, le thread abandonne le reste de sa tranche de temps à n’importe quel thread de priorité égale prêt à être exécuté.If the value of the millisecondsTimeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. S'il n'existe pas d'autres threads de priorité égale prêts à être exécutés, l'exécution du thread actuel n'est pas suspendue.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Exceptions

La valeur de timeout est négative et n’est pas égale à Infinite en millisecondes, ou est supérieure à MaxValue millisecondes.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

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.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

using namespace System;
using namespace System::Threading;

int main()
{
    TimeSpan interval = 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.
 */
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.
 */
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 être exécuté par le système d’exploitation pendant la durée spécifiée.The thread will not be scheduled for execution by the operating system for the amount of time specified. Cette méthode modifie l’état du thread pour inclure WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

Vous pouvez spécifier Timeout.InfiniteTimeSpan pour le paramètre timeout pour suspendre indéfiniment le thread.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. Toutefois, nous vous recommandons d’utiliser d’autres classes System.Threading, telles que Mutex, Monitor, EventWaitHandle ou Semaphore pour synchroniser les threads ou gérer les ressources.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Cette surcharge de Sleep utilise le nombre total de millisecondes entières dans timeout.This overload of Sleep uses the total number of whole milliseconds in timeout. Les millisecondes fractionnaires sont ignorées.Fractional milliseconds are discarded.

Cette méthode n’effectue pas de pompage COM et SendMessage standard.This method does not perform standard COM and SendMessage pumping.

Notes

Si vous devez vous mettre en veille sur un thread qui a STAThreadAttribute, mais que vous souhaitez effectuer un pompage COM et SendMessage standard, envisagez d’utiliser l’une des surcharges de la méthode Join qui spécifie un intervalle de délai d’attente.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

S’applique à