Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chương trình C# tạm dừng luồng (Thread.Sleep)

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.