Thread.Sleep Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.