Thread.Sleep Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menangguhkan utas saat ini untuk jumlah waktu yang ditentukan.
Overload
Sleep(Int32) |
Menangguhkan utas saat ini untuk jumlah milidetik yang ditentukan. |
Sleep(TimeSpan) |
Menangguhkan utas saat ini untuk jumlah waktu yang ditentukan. |
Sleep(Int32)
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
Menangguhkan utas saat ini untuk jumlah milidetik yang ditentukan.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep (int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
Parameter
- millisecondsTimeout
- Int32
Jumlah milidetik di mana utas ditangguhkan. Jika nilai millisecondsTimeout
argumen adalah nol, utas melepaskan sisa ikatan waktunya ke utas dengan prioritas yang sama yang siap dijalankan. Jika tidak ada utas lain dengan prioritas yang sama yang siap dijalankan, eksekusi utas saat ini tidak ditangguhkan.
Pengecualian
Nilai waktu habis negatif dan tidak sama dengan Infinite.
Contoh
Contoh berikut menggunakan metode untuk memblokir utas Sleep utama aplikasi.
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.
Keterangan
Utas tidak akan dijadwalkan untuk dieksekusi oleh sistem operasi untuk jumlah waktu yang ditentukan. Metode ini mengubah status utas menjadi menyertakan WaitSleepJoin.
Anda dapat menentukan Timeout.Infinite parameter untuk millisecondsTimeout
menangguhkan utas tanpa batas waktu. Namun, kami sarankan Anda menggunakan kelas lain System.Threading seperti Mutex, , EventWaitHandleMonitor, atau Semaphore sebagai gantinya untuk menyinkronkan utas atau mengelola sumber daya.
Jam sistem berdetak pada tingkat tertentu yang disebut resolusi jam. Batas waktu aktual mungkin bukan batas waktu yang ditentukan, karena batas waktu yang ditentukan akan disesuaikan bertepatan dengan jam centang. Untuk informasi selengkapnya tentang resolusi jam dan waktu tunggu, lihat fungsi Tidur dari API sistem Windows.
Metode ini tidak melakukan pemompaan COM dan SendMessage standar.
Catatan
Jika Anda perlu tidur di utas Join yang memiliki STAThreadAttribute, tetapi Anda ingin melakukan pemompaan COM dan SendMessage standar, pertimbangkan untuk menggunakan salah satu kelebihan beban metode yang menentukan interval batas waktu.
Berlaku untuk
Sleep(TimeSpan)
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
- Sumber:
- Thread.cs
Menangguhkan utas saat ini untuk jumlah waktu yang ditentukan.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep (TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
Parameter
- timeout
- TimeSpan
Jumlah waktu di mana utas ditangguhkan. Jika nilai timeout
argumen adalah Zero, utas melepaskan sisa ikatan waktunya ke utas dengan prioritas yang sama yang siap dijalankan. Jika tidak ada utas lain dengan prioritas yang sama yang siap dijalankan, eksekusi utas saat ini tidak ditangguhkan.
Pengecualian
Nilai timeout
negatif dan tidak sama dengan Infinite dalam milidetik, atau lebih besar dari Int32.MaxValue milidetik.
Contoh
Contoh berikut menggunakan metode kelebihan beban untuk memblokir utas Sleep(TimeSpan) utama aplikasi lima kali, selama dua detik setiap kali.
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.
Keterangan
Utas tidak akan dijadwalkan untuk dieksekusi oleh sistem operasi untuk jumlah waktu yang ditentukan. Metode ini mengubah status utas menjadi menyertakan WaitSleepJoin.
Anda dapat menentukan Timeout.InfiniteTimeSpan parameter untuk timeout
menangguhkan utas tanpa batas waktu. Namun, kami sarankan Anda menggunakan kelas lain System.Threading seperti Mutex, , EventWaitHandleMonitor, atau Semaphore sebagai gantinya untuk menyinkronkan utas atau mengelola sumber daya.
Kelebihan beban Sleep ini menggunakan jumlah total seluruh milidetik dalam timeout
. Milidetik pecahan dibuang.
Metode ini tidak melakukan pemompaan COM dan SendMessage standar.
Catatan
Jika Anda perlu tidur di utas Join yang memiliki STAThreadAttribute, tetapi Anda ingin melakukan pemompaan COM dan SendMessage standar, pertimbangkan untuk menggunakan salah satu kelebihan beban metode yang menentukan interval batas waktu.