Thread.Sleep Methode

Definitie

Onderbreekt de huidige thread voor de opgegeven hoeveelheid tijd.

Overloads

Name Description
Sleep(Int32)

Onderbreekt de huidige thread voor het opgegeven aantal milliseconden.

Sleep(TimeSpan)

Onderbreekt de huidige thread voor de opgegeven hoeveelheid tijd.

Sleep(Int32)

Onderbreekt de huidige thread voor het opgegeven aantal milliseconden.

public:
 static void Sleep(int millisecondsTimeout);
public static void Sleep(int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)

Parameters

millisecondsTimeout
Int32

Het aantal milliseconden waarvoor de thread is onderbroken. Als de waarde van het millisecondsTimeout argument nul is, zorgt de thread ervoor dat de rest van het tijdssegment wordt teruggegeven aan een thread met gelijke prioriteit die klaar is om te worden uitgevoerd. Als er geen andere threads met gelijke prioriteit zijn die klaar zijn om te worden uitgevoerd, wordt de uitvoering van de huidige thread niet onderbroken.

Uitzonderingen

De time-outwaarde is negatief en is niet gelijk aan Infinite.

Voorbeelden

In het volgende voorbeeld wordt de Sleep methode gebruikt om de hoofdthread van de toepassing te blokkeren.

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.

Opmerkingen

De thread wordt niet gepland voor uitvoering door het besturingssysteem voor de opgegeven tijdsduur. Met deze methode wordt de status van de thread gewijzigd zodat deze wordt opgenomen WaitSleepJoin.

U kunt opgeven Timeout.Infinite dat de parameter de millisecondsTimeout thread voor onbepaalde tijd moet onderbreken. U wordt echter aangeraden andere System.Threading klassen zoals Mutex, Monitorof EventWaitHandleSemaphore in plaats daarvan threads te synchroniseren of resources te beheren.

De systeemklok tikt op een specifieke snelheid die de klokresolutie wordt genoemd. De werkelijke time-out is mogelijk niet precies de opgegeven time-out, omdat de opgegeven time-out wordt aangepast om samen te vallen met kloktekens. Zie de functie Sleep van de Windows systeem-API's voor meer informatie over de klokresolutie en de wachttijd.

Deze methode voert geen standaard COM- en SendMessage-pomp uit.

Note

Als u moet slapen op een thread met STAThreadAttribute, maar u wilt standaard COM- en SendMessage-pomping uitvoeren, kunt u overwegen een van de overbelastingen van de Join methode te gebruiken die een time-outinterval aangeeft.

Van toepassing op

Sleep(TimeSpan)

Onderbreekt de huidige thread voor de opgegeven hoeveelheid tijd.

public:
 static void Sleep(TimeSpan timeout);
public static void Sleep(TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)

Parameters

timeout
TimeSpan

De hoeveelheid tijd waarvoor de thread wordt onderbroken. Als de waarde van het timeout argument is Zero, zorgt de thread ervoor dat de rest van het tijdssegment wordt teruggegeven aan een thread met gelijke prioriteit die klaar is om te worden uitgevoerd. Als er geen andere threads met gelijke prioriteit zijn die klaar zijn om te worden uitgevoerd, wordt de uitvoering van de huidige thread niet onderbroken.

Uitzonderingen

De waarde is timeout negatief en is niet gelijk aan Infinite in milliseconden of is groter dan Int32.MaxValue milliseconden.

Voorbeelden

In het volgende voorbeeld wordt de overbelasting van de Sleep(TimeSpan) methode gebruikt om de hoofdthread van de toepassing vijf keer te blokkeren, gedurende twee seconden per keer.

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.

Opmerkingen

De thread wordt niet gepland voor uitvoering door het besturingssysteem voor de opgegeven tijdsduur. Met deze methode wordt de status van de thread gewijzigd zodat deze wordt opgenomen WaitSleepJoin.

U kunt opgeven Timeout.InfiniteTimeSpan dat de parameter de timeout thread voor onbepaalde tijd moet onderbreken. U wordt echter aangeraden andere System.Threading klassen zoals Mutex, Monitorof EventWaitHandleSemaphore in plaats daarvan threads te synchroniseren of resources te beheren.

Deze overbelasting van Sleep het gebruik van het totale aantal gehele milliseconden in timeout. Fractionele milliseconden worden verwijderd.

Deze methode voert geen standaard COM- en SendMessage-pomp uit.

Note

Als u moet slapen op een thread met STAThreadAttribute, maar u wilt standaard COM- en SendMessage-pomping uitvoeren, kunt u overwegen een van de overbelastingen van de Join methode te gebruiken die een time-outinterval aangeeft.

Van toepassing op