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)

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.

C#
public static void Sleep(int millisecondsTimeout);

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 .

C#
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.
 */

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

.NET 10 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Sleep(TimeSpan)

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

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

C#
public static void Sleep(TimeSpan timeout);

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) .

C#
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.
 */

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

.NET 10 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1