Thread.Sleep() मेथड वर्तमान थ्रेड को निर्दिष्ट मिलीसेकंड्स के लिए निलंबित (पॉज) कर देता है। यह थ्रेड को CPU समय त्यागने के लिए मजबूर करता है।
सिंटैक्स
Thread.Sleep(मिलीसेकंड्स); // या Thread.Sleep(TimeSpan);
उदाहरण: 1 सेकंड के लिए लूप में पॉज करना
using System;
using System.Threading;
namespace Sample {
class Demo {
static void Main(string[] args) {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Sleep for 1 second!");
Thread.Sleep(1000); // 1000 मिलीसेकंड्स = 1 सेकंड
}
Console.ReadLine();
}
}
}
आउटपुट
Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second! Sleep for 1 second!
महत्वपूर्ण बिंदु
Thread.Sleep(0)थ्रेड को शेष क्वांटम त्यागने के लिए मजबूर करता है (यील्ड)।Thread.Sleep(-1)याThread.Sleep(Timeout.Infinite)थ्रेड को अनिश्चित काल के लिए ब्लॉक करता है।- स्लीप के दौरान थ्रेड कोई CPU साइकल नहीं खपत करता।
- UI थ्रेड (मुख्य थ्रेड) पर
Sleepकॉल करने से एप्लिकेशन अनुत्तरदायी हो जाता है।
बेहतर विकल्प: async/await के साथ Task.Delay
आधुनिक C# में, विशेषकर UI एप्लिकेशन्स में, Task.Delay का उपयोग करना बेहतर है क्योंकि यह थ्रेड को ब्लॉक नहीं करता:
// खराब: UI फ्रीज हो जाएगा Thread.Sleep(5000); // अच्छा: UI उत्तरदायी रहता है await Task.Delay(5000);
उपयोग केस
- रेट लिमिटिंग (API कॉल्स के बीच देरी)
- रिट्री लॉजिक में बैकऑफ
- सिमुलेशन/टेस्टिंग में कृत्रिम देरी
- कंसोल एप्लिकेशन्स में आउटपुट पेसिंग