2010-05-10 14 views
10

मैं माइक्रोसॉन्ड की सटीकता के साथ एक वास्तविक समय घड़ी चाहता हूं मैं ऐसा कैसे कर सकता हूं?सी # में वास्तविक समय घड़ी कैसे प्राप्त करें?

स्टॉपवॉच के अलावा कोई वास्तविक समय घड़ी है;

+8

क्यों "स्टॉपवॉच के अलावा"? क्या यह पूछने की तरह नहीं है, "मैं एक स्ट्रिंग को स्टोर करना चाहता हूं। क्या स्ट्रिंग के अलावा कोई स्ट्रिंग प्रकार है?" –

+0

संभावित डुप्लिकेट [क्या उत्पादन कोड में स्टॉपवॉच का उपयोग किया जा सकता है?] (Http://stackoverflow.com/questions/2805362/can-stopwatch-be-used-in-production-code) – BFree

उत्तर

15

आप System.Diagnostics.Stopwatch चाहते हैं, जो माइक्रोसॉन्ड (हार्डवेयर सीमाओं के आधार पर) के लिए सटीक रूप से समय अंतराल को माप सकता है।

+2

+1: स्टॉपवॉच के बारे में नहीं पता था । –

4

.NET में उपलब्ध सबसे सटीक टाइमर StopWatch है।

3

आप QueryPerformanceCounter समारोह इस्तेमाल कर सकते हैं एक उच्च संकल्प माप के लिए:

class Program 
{ 
    [DllImport("kernel32.dll")] 
    private static extern void QueryPerformanceCounter(ref long ticks); 

    static void Main() 
    { 
     long startTicks = 0L; 
     QueryPerformanceCounter(ref startTicks); 

     // some task 

     long endTicks = 0L; 
     QueryPerformanceCounter(ref endTicks); 
     long res = endTicks - startTicks; 
    } 
} 
+3

यह System.Diagnostics.Stopwatch में कार्यक्षमता के बराबर है। –

+0

क्रिस सही है। स्टॉपवॉच कवर के नीचे kernel32 'QueryPerformanceCounter' का उपयोग करता है, इसलिए इस कोड का उपयोग करने के लिए कोई कारण नहीं है (.NET 2.0 या ऊपर का उपयोग करते समय)। यह कोड अभी भी उन गरीब आत्माओं के लिए उपयोगी है जो अभी भी .NET 1.1 के साथ काम कर रहे हैं। – Steven

7

System.Diagnostics.StopwatchQueryPerformanceCounter और QueryPerformanceFrequency विंडोज एपीआई का उपयोग करता है। संकल्प मशीनों में मानक नहीं है, लेकिन आम तौर पर यह microseconds के क्रम पर है (अधिक जानकारी के लिए this KB article देखें)।

Vista/Win7 में QueryProcessCycleTime और QueryThreadCycleTime भी है जो आपको आपकी प्रक्रिया/थ्रेड के लिए विलुप्त चक्रों की संख्या देगा। यह उपयोगी है अगर आप प्रक्रिया के लिए केवल सक्रिय समय जानना चाहते हैं (उदा। समय जब आप स्विच नहीं किए गए थे)।

0

यदि आप एक अच्छा समय मेसुरमेंट चाहते हैं तो मुझे लगता है कि उच्च स्तर की भाषा के रूप में csharp एक अच्छा विचार नहीं हो सकता है। आप एक साधारण प्रोग्राम को इकट्ठा कर सकते हैं जो आरटीसी को टैप करता है और उसके बाद इसे अपने प्रोग्राम में लाइब्रेरी के माध्यम से जोड़ता है। यह सचमुच सबसे अच्छा संभव परिदृश्य है जिसे आप प्राप्त कर सकते हैं जिसके साथ कोई ऑब्जेक्ट ओवरहेंग नहीं होता है, लेकिन इसके लिए कुछ निम्न स्तर की आवश्यकता होती है कि एक साथ कैसे रखा जाए।

0

यदि आपके पास इंटरनेट का उपयोग नहीं है और आप सॉफ़्टवेयर के समय परीक्षण लाइसेंस के लिए वास्तविक समय चाहते हैं तो आप रीयल टाइम घड़ी के साथ यूएसबी डोंगल का उपयोग कर सकते हैं।

इसकी समय गणना एक आंतरिक घड़ी द्वारा संचालित होती है जो बैटरी संचालित होती है। आप एपीआई कार्यों का उपयोग कर यूएसबी डोंगल से उस समय तक पहुंच सकते हैं जो इन प्रकार के डोंगल के साथ आते हैं।

EX-http://www.senselock-europe.com/en/elite-el-rtc-dongle.html

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