Stopwatch.GetTimestamp() का उपयोग करने में हम पाते हैं कि यदि आप रिटर्न वैल्यू रिकॉर्ड करते हैं और फिर इसे कॉल करना जारी रखते हैं और पिछले रिटर्न वैल्यू की तुलना करते हैं, तो अंत में यह अप्रत्याशित रूप से मूल से कम मान वापस कर देगा।क्या स्टॉपवॉच है। गेटिमस्टैम्प कभी रोल हो जाता है? या वापस रोल?
क्या यह अपेक्षित व्यवहार है?
उत्पादन कोड में ऐसा करने का उद्देश्य एक माइक्रोसेकंद सटीक sytem समय होना है।
तकनीक में डेटटाइम.यूटीसीएनओ को कॉल करना और स्टॉपवॉच.गेटटाइमेस्टैम्प() को क्रमशः मूल UtcNow और originalTimestamp के रूप में कॉल करना शामिल है।
उस बिंदु से आगे, एप्लिकेशन बस Stopwatch.GetTimestamp() को कॉल करता है और स्टॉपवॉच का उपयोग करता है। फ़्रिक्वेंसी यह मूलTimestamp चर से अंतर की गणना करता है और फिर उस मूल को मूल UtcNow में जोड़ता है।
फिर, वोला ... एक कुशल और सटीक माइक्रोसॉन्ड डेटटाइम।
लेकिन, हम पाते हैं कि कभी-कभी Stopwatch.GetTimestamp() कम संख्या वापस आ जाएगा।
यह शायद ही कभी होता है। हमारी सोच यह होती है कि जब ऐसा होता है और जारी रहता है तो बस "रीसेट" करना है।
हालांकि, यह हमें Stopwatch.GetTimestamp() की सटीकता पर संदेह करता है या संदेह है कि नेट लाइब्रेरी में एक बग है।
यदि आप इस पर कुछ प्रकाश डाल सकते हैं, तो कृपया करें।
एफवाईआई, वर्तमान टाइमस्टैम्प मूल्य, आवृत्ति, और लंबे समय के आधार पर। मैक्सवेल्यू यह असंभव प्रतीत होता है कि यह हमारे जीवनकाल के दौरान तब तक रोल हो जाएगा जब तक कि यह हार्डवेयर समस्या न हो।
संपादित करें: हम अब इस मान को "प्रति थ्रेड" की गणना कर रहे हैं और फिर इसे "इसे क्लैंपिंग" कर रहे हैं ताकि कोर को रीसेट करने के लिए कूद के लिए देख सकें।
आपके पास "माइक्रोसेकंड" सटीक sytem समय "जब 'UtcNow' microsecond सटीक नहीं है? यह संख्या केवल अंतराल के सटीक समय के लिए उपयोग की जा सकती है। – Groo
क्षमा करें। क्या आपने मेरी व्याख्या पढ़ी? यह केवल एप्लिकेशन की शुरुआत में UtcNow को कॉल करता है। उस बिंदु से सिस्टम घड़ी का उपयोग करता है और वर्तमान समय प्राप्त करने के लिए अंतर की गणना करता है। – Wayne
स्टॉपवॉच उच्च-रिज़ॉल्यूशन टाइमर का उपयोग करता है जब उसके पास पहुंच होती है या वे कंप्यूटर पर मौजूद होते हैं। –