Thread.Sleep Yöntem

Tanım

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

Aşırı Yüklemeler

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)

Source:
Thread.cs
Source:
Thread.cs
Source:
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 geri kalanını çalıştırmaya hazır olan eşit öncelikli herhangi bir iş parçacığına keser. Ç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, uygulamanın ana iş parçacığını engellemek için yöntemini kullanır Sleep .

using namespace System;
using namespace System::Threading;

int 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.
 */
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ığı belirtilen süre boyunca işletim sistemi tarafından 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ı millisecondsTimeout süresiz olarak askıya almasını belirtebilirsinizTimeout.Infinite. Ancak, iş parçacıklarını eşitlemek veya Semaphore kaynakları yönetmek için , Monitor, EventWaitHandleveya gibi Mutexdiğer System.Threading sınıfları kullanmanızı öneririz.

Sistem saati, saat çözünürlüğü olarak adlandırılan belirli bir hızda çalışır. Gerçek zaman aşımı tam olarak belirtilen zaman aşımı olmayabilir, çünkü belirtilen zaman aşımı saat değerleriyle çakışacak şekilde ayarlanır. Saat çözünürlüğü ve bekleme süresi hakkında daha fazla bilgi için Bkz. Windows sistem API'lerinden Uyku işlevi .

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

Not

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)

Source:
Thread.cs
Source:
Thread.cs
Source:
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şkeninin timeout değeri ise Zero, iş parçacığı zaman diliminin geri kalanını, çalışmaya hazır olan eşit öncelikli herhangi bir iş parçacığına keser. Ç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 olarak eşit Infinite değildir veya Int32.MaxValue milisaniye değerinden 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 namespace System;
using namespace System::Threading;

int main()
{
    TimeSpan interval = 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.
 */
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ığı belirtilen süre boyunca işletim sistemi tarafından 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 süresiz olarak askıya almasını belirtebilirsinizTimeout.InfiniteTimeSpan. Ancak, iş parçacıklarını eşitlemek veya Semaphore kaynakları yönetmek için , Monitor, EventWaitHandleveya gibi Mutexdiğer System.Threading 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.

Not

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