Thread.Sleep Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.