Phương thức Thread.Sleep(milliseconds) tạm dừng luồng hiện tại trong khoảng thời gian chỉ định (tính bằng mili-giây).
Cú pháp
// Tạm dừng 5 giây (5000 ms)
Thread.Sleep(5000);
// Tạm dừng 1 giây
Thread.Sleep(1000);
Mã nguồn: Vòng lặp tạm dừng 1 giây
using System;
using System.Threading;
namespace Sample {
class Demo {
static void Main(string[] args) {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Ngủ 1 giây!");
Thread.Sleep(1000); // Tạm dừng 1000 ms = 1 giây
}
Console.ReadLine();
}
}
}
Kết quả
Ngủ 1 giây!
Ngủ 1 giây!
... (lặp 10 lần, mỗi lần cách 1 giây)
Lưu ý quan trọng
- Block luồng hiện tại: Sleep làm luồng ngủ hoàn toàn, không tiêu tốn CPU nhưng cũng không làm việc gì khác.
- Không chính xác tuyệt đối: Thời gian thực tế có thể lâu hơn do lịch trình OS.
- Không dùng trong UI thread (WinForms, WPF, MAUI) — sẽ làm giao diện đứng hình (freeze). Hãy dùng
await Task.Delay()thay thế. - Đơn vị là mili-giây (1 giây = 1000 ms).
Thay thế hiện đại (async/await)
// Trong phương thức async
for (int i = 0; i < 10; i++) {
Console.WriteLine("Đợi 1 giây...");
await Task.Delay(1000); // Không block luồng
}
Khi nào dùng Sleep?
- Console app đơn giản, tác vụ nền không quan trọng thời gian chính xác.
- Throttling (giới hạn tốc độ) request, retry logic đơn giản.
- Mô phỏng độ trễ trong test/debug.