Thread.Sleep Metod

Definition

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.

Gäller för