Thread.Sleep Yöntem

Tanım

Geçerli iş parçacığını belirtilen süre boyunca askıya alır.

Aşırı Yüklemeler

Name Description
Sleep(Int32)

Belirtilen sayıda milisaniye için geçerli iş parçacığını askıya alır.

Sleep(TimeSpan)

Geçerli iş parçacığını belirtilen süre boyunca askıya alır.

Sleep(Int32)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

Belirtilen sayıda milisaniye için geçerli iş parçacığını askıya alır.

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

Parametreler

millisecondsTimeout
Int32

İş parçacığının askıya alındığı milisaniye sayısı. Bağımsız değişkenin millisecondsTimeout değeri sıfırsa, iş parçacığı, zaman diliminin kalan kısmını çalıştırmaya hazır olan eşit öncelikli herhangi bir iş parçacığına verir. Çalıştırılmaya hazır eşit öncelikli başka iş parçacığı yoksa, geçerli iş parçacığının yürütülmesi askıya alınmaz.

Özel durumlar

Zaman aşımı değeri negatiftir ve değerine Infiniteeşit değildir.

Örnekler

Aşağıdaki örnek, Sleep uygulamanın ana iş parçacığını engellemek için yöntemini kullanır.

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.

Açıklamalar

İş parçacığı, işletim sistemi tarafından belirtilen süre boyunca yürütülecek şekilde zamanlanmaz. Bu yöntem, iş parçacığının durumunu içerecek WaitSleepJoinşekilde değiştirir.

parametresinin iş parçacığını Timeout.Infinite süresiz olarak askıya almasını belirtebilirsinizmillisecondsTimeout. Ancak, iş parçacıklarını eşitlemek veya System.Threading kaynakları yönetmek için , Mutex, Monitorveya gibi EventWaitHandlediğer Semaphore sınıfları kullanmanızı öneririz.

Sistem saati, saat çözünürlüğü olarak adlandırılan belirli bir hızda çalışır. Belirtilen zaman aşımı saat işaretleriyle aynı zamana denk gelecek şekilde ayarlanacağından, gerçek zaman aşımı tam olarak belirtilen zaman aşımı olmayabilir. Saat çözünürlüğü ve bekleme süresi hakkında daha fazla bilgi için Windows sistem API'lerinden Sleep işlevi bakın.

Bu yöntem standart COM ve SendMessage pompalama gerçekleştirmez.

Note

içeren STAThreadAttributebir iş parçacığında uyumanız gerekiyorsa, ancak standart COM ve SendMessage pompalama gerçekleştirmek istiyorsanız, yöntemin zaman aşımı aralığını belirten aşırı yüklemelerinden Join birini kullanmayı göz önünde bulundurun.

Şunlara uygulanır

Sleep(TimeSpan)

Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs
Kaynak:
Thread.cs

Geçerli iş parçacığını belirtilen süre boyunca askıya alır.

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

Parametreler

timeout
TimeSpan

İş parçacığının askıya alındığı süre. Bağımsız değişkenin timeout değeri ise Zero, iş parçacığı, zaman diliminin geri kalanını çalıştırmaya hazır eşit öncelikli herhangi bir iş parçacığına verir. Çalıştırılmaya hazır eşit öncelikli başka iş parçacığı yoksa, geçerli iş parçacığının yürütülmesi askıya alınmaz.

Özel durumlar

değeri timeout negatiftir ve milisaniye cinsinden değerine eşit Infinite değildir veya Int32.MaxValue milisaniyeden büyüktür.

Örnekler

Aşağıdaki örnek, uygulamanın ana iş parçacığını her seferinde iki saniye boyunca beş kez engellemek için yöntem aşırı yüklemesini kullanır Sleep(TimeSpan) .

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.

Açıklamalar

İş parçacığı, işletim sistemi tarafından belirtilen süre boyunca yürütülecek şekilde zamanlanmaz. Bu yöntem, iş parçacığının durumunu içerecek WaitSleepJoinşekilde değiştirir.

parametresinin iş parçacığını Timeout.InfiniteTimeSpan süresiz olarak askıya almasını belirtebilirsiniztimeout. Ancak, iş parçacıklarını eşitlemek veya System.Threading kaynakları yönetmek için , Mutex, Monitorveya gibi EventWaitHandlediğer Semaphore sınıfları kullanmanızı öneririz.

bu aşırı yükleme, Sleep içindeki timeouttoplam milisaniye sayısını kullanır. Kesirli milisaniyeler atılır.

Bu yöntem standart COM ve SendMessage pompalama gerçekleştirmez.

Note

içeren STAThreadAttributebir iş parçacığında uyumanız gerekiyorsa, ancak standart COM ve SendMessage pompalama gerçekleştirmek istiyorsanız, yöntemin zaman aşımı aralığını belirten aşırı yüklemelerinden Join birini kullanmayı göz önünde bulundurun.

Şunlara uygulanır