2011-08-30 9 views
5

तो मैं है निम्नलिखित कोड ब्लॉक:क्यों मेरी स्टॉपवॉच के बाद reseting रखता है है 1 सेकंड

var sw = new Stopwatch(); 
sw.Start(); 
while (sw.Elapsed.Seconds<10) 
{ 
    System.Threading.Thread.Sleep(50); 
    Console.WriteLine(sw.Elapsed.Milliseconds.ToString() + " ms"); 
} 
sw.Stop(); 

और उत्पादन में मेरे पास है

50 ms 
101 ms 
151 ms 
202 ms 
253 ms 
304 ms 
355 ms 
405 ms 
456 ms 
507 ms 
558 ms 
608 ms 
659 ms 
710 ms 
761 ms 
812 ms 
862 ms 
913 ms 
964 ms 
15 ms 
65 ms 
116 ms 
167 ms 
218 ms 

ऐसा क्यों है हर 1000 एमएस रीसेट करता है? मुझे 10 सेकंड तक इंतजार करना होगा और मैं Thread.Sleep(10000); का उपयोग नहीं कर सकता क्योंकि यह तीसरी पार्टी लाइब्रेरी मैं नींद का उपयोग करता हूं और मुझे उस समय सामान करने की ज़रूरत है।

उत्तर

13

क्योंकि Stopwatch.Elapsed.Milliseconds बस बीत चुके समय के मिलीसेकंड घटक आउटपुट करता है। यह मिलीसेकंड में कुल समय है। यह दस्तावेज़ीकरण से स्पष्ट है।

वर्तमान TimeSpan संरचना का प्रतिनिधित्व करती समय अंतराल के मिलीसेकेंड घटक हो जाता है: Stopwatch.ElapsedTimeSpan और TimeSpan.Milliseconds राज्यों का एक उदाहरण है।

आप मिलीसेकेंड में उत्पादन चाहते हैं, और आप कुल मिलीसेकेंड चाहते हैं, तो TimeSpan.TotalMilliseconds का उपयोग करें:

वर्तमान TimeSpan संरचना पूरे और आंशिक मिलीसेकेंड में व्यक्त की मूल्य हो जाता है।

हमेशा, हमेशा, दस्तावेज़ों की जांच करें!

+2

+1 हमेशा दस्तावेज़ों की जांच के लिए। – Polyfun

1

के बजाय आप जरूरी TimeSpanElapsed संपत्ति द्वारा दिया उपयोग करने की आवश्यकता नहीं है।

StopWatch सीधे ElapsedMilliseconds संपत्ति का खुलासा करता है जो long के रूप में मिलीसेकंड की कुल संख्या देता है। Elapsed संपत्ति के माध्यम से TotalMilliseconds प्राप्त करने के लिए एक डबल मिलेगा। उस मान का उपयोग करें जो आपको सबसे ज्यादा समझ में आता है।

संबंधित मुद्दे