C# में Stopwatch.Restart() मेथड स्टॉपवॉच को शून्य (शुरुआत) पर रीसेट करता है और तुरंत फिर से मापना शुरू करता है। यह Stop() फिर Reset() फिर Start() कॉल करने के बराबर है, लेकिन अधिक कुशल है।
उदाहरण
using System;
using System.Threading;
using System.Diagnostics;
public class Demo
{
public static void Main()
{
// स्टॉपवॉच शुरू करें
Stopwatch sw = Stopwatch.StartNew();
// कुछ काम का अनुकरण (500ms सोएं)
Thread.Sleep(500);
Console.WriteLine($"पहला माप: {sw.ElapsedMilliseconds} ms");
// Restart() - टाइमर को शून्य पर रीसेट करें और फिर से शुरू करें
sw.Restart();
// फिर से कुछ काम
Thread.Sleep(500);
Console.WriteLine($"Restart के बाद दूसरा माप: {sw.ElapsedMilliseconds} ms");
Console.WriteLine($"कुल बीता समय (Restart के बाद): {sw.Elapsed}");
}
}
आउटपुट
पहला माप: 500 ms Restart के बाद दूसरा माप: 500 ms कुल बीता समय (Restart के बाद): 00:00:00.5004937
Restart() बनाम अन्य मेथड्स
| मेथड | व्यवहार |
|---|---|
Start() | रुके हुए स्टॉपवॉच को जारी रखता है (समय जारी रहता है) |
Stop() | माप रोकता है (समय रुक जाता है) |
Reset() | समय शून्य पर सेट करता है, रुकी हुई अवस्था में रहता है |
Restart() | समय शून्य पर सेट करता है और तुरंत शुरू करता है |
व्यावहारिक उपयोग: बेंचमार्किंग में लैप टाइम्स
using System;
using System.Diagnostics;
public class Demo
{
public static void Main()
{
Stopwatch sw = Stopwatch.StartNew();
// चरण 1
DoWork(100);
long phase1 = sw.ElapsedMilliseconds;
Console.WriteLine($"चरण 1: {phase1} ms");
// चरण 2 के लिए रीस्टार्ट
sw.Restart();
DoWork(200);
long phase2 = sw.ElapsedMilliseconds;
Console.WriteLine($"चरण 2: {phase2} ms");
// चरण 3 के लिए रीस्टार्ट
sw.Restart();
DoWork(150);
long phase3 = sw.ElapsedMilliseconds;
Console.WriteLine($"चरण 3: {phase3} ms");
Console.WriteLine($"\nकुल (अलग-अलग मापा): {phase1 + phase2 + phase3} ms");
}
static void DoWork(int ms)
{
// काम का अनुकरण
System.Threading.Thread.Sleep(ms);
}
}
आउटपुट
चरण 1: 100 ms चरण 2: 200 ms चरण 3: 150 ms कुल (अलग-अलग मापा): 450 ms
Stopwatch के अन्य उपयोगी मेथड्स/प्रॉपर्टीज
Stopwatch sw = Stopwatch.StartNew(); // बीता समय प्राप्त करने के विभिन्न तरीके Console.WriteLine(sw.Elapsed); // TimeSpan (hh:mm:ss.fffffff) Console.WriteLine(sw.ElapsedMilliseconds); // long (कुल मिलीसेकंड) Console.WriteLine(sw.ElapsedTicks); // long (कुल टिक्स) Console.WriteLine(sw.IsRunning); // bool // रुकने के बाद फिर से शुरू करना (समय जारी रखना) sw.Stop(); // ... कुछ समय बाद ... sw.Start(); // समय वहीं से जारी रहता है जहां रुका था
महत्वपूर्ण बिंदु
Restart()System.Diagnostics.Stopwatchका इंस्टेंस मेथड है- यह आंतरिक टाइमर को शून्य पर रीसेट करता है और
IsRunningकोtrueसेट करता है - बेंचमार्किंग, प्रोफाइलिंग, अंतराल मापने के लिए आदर्श
DateTime.Nowसे अधिक सटीक (हाई-रिज़ॉल्यूशन टाइमर का उपयोग करता है)- थ्रेड-सुरक्षित नहीं है - बहु-थ्रेडेड परिदृश्यों में सावधानी से उपयोग करें