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
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.
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)
- 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ş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 timeout
toplam 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.