Thread.Sleep Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Pausar den aktuella tråden under den angivna tiden.
Överlagringar
| Name | Description |
|---|---|
| Sleep(Int32) |
Pausar den aktuella tråden för det angivna antalet millisekunder. |
| Sleep(TimeSpan) |
Pausar den aktuella tråden under den angivna tiden. |
Sleep(Int32)
Pausar den aktuella tråden för det angivna antalet millisekunder.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep(int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
Parametrar
- millisecondsTimeout
- Int32
Antalet millisekunder som tråden är pausad för. Om värdet för millisecondsTimeout argumentet är noll, avser tråden resten av tidssegmentet till alla trådar med samma prioritet som är redo att köras. Om det inte finns några andra trådar med samma prioritet som är redo att köras pausas inte körningen av den aktuella tråden.
Undantag
Tidsgränsvärdet är negativt och är inte lika med Infinite.
Exempel
I följande exempel används Sleep metoden för att blockera programmets huvudtråd.
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.
Kommentarer
Tråden schemaläggs inte för körning av operativsystemet under den angivna tiden. Den här metoden ändrar trådens tillstånd till att inkludera WaitSleepJoin.
Du kan ange Timeout.Infinite att parametern millisecondsTimeout ska pausa tråden på obestämd tid. Vi rekommenderar dock att du använder andra System.Threading klasser som Mutex, Monitor, EventWaitHandleeller Semaphore i stället för att synkronisera trådar eller hantera resurser.
Systemklockan tickar med en specifik hastighet som kallas klockupplösning. Den faktiska tidsgränsen kanske inte är exakt den angivna tidsgränsen, eftersom den angivna tidsgränsen justeras för att sammanfalla med klockfästingar. Mer information om klockmatchning och väntetid finns i funktionen Sleep från Windows-system-API:erna.
Den här metoden utför inte com- och SendMessage-standardpumpning.
Note
Om du behöver viloläge på en tråd som har STAThreadAttribute, men du vill utföra com- och SendMessage-standardpumpning, bör du överväga att använda en av överlagringarna för metoden Join som anger ett tidsgränsintervall.
Gäller för
Sleep(TimeSpan)
Pausar den aktuella tråden under den angivna tiden.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep(TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
Parametrar
- timeout
- TimeSpan
Hur lång tid tråden pausas. Om värdet för timeout argumentet är Zero, hämtar tråden resten av sin tidssektor till alla trådar med samma prioritet som är redo att köras. Om det inte finns några andra trådar med samma prioritet som är redo att köras pausas inte körningen av den aktuella tråden.
Undantag
Värdet timeout för är negativt och är inte lika med Infinite i millisekunder eller är större än Int32.MaxValue millisekunder.
Exempel
I följande exempel används metodöverbelastningen Sleep(TimeSpan) för att blockera programmets huvudtråd fem gånger, i två sekunder varje gång.
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.
Kommentarer
Tråden schemaläggs inte för körning av operativsystemet under den angivna tiden. Den här metoden ändrar trådens tillstånd till att inkludera WaitSleepJoin.
Du kan ange Timeout.InfiniteTimeSpan att parametern timeout ska pausa tråden på obestämd tid. Vi rekommenderar dock att du använder andra System.Threading klasser som Mutex, Monitor, EventWaitHandleeller Semaphore i stället för att synkronisera trådar eller hantera resurser.
Den här överbelastningen av Sleep använder det totala antalet hela millisekunder i timeout. Bråk millisekunder tas bort.
Den här metoden utför inte com- och SendMessage-standardpumpning.
Note
Om du behöver viloläge på en tråd som har STAThreadAttribute, men du vill utföra com- och SendMessage-standardpumpning, bör du överväga att använda en av överlagringarna för metoden Join som anger ett tidsgränsintervall.