2012-04-15 19 views
8

मैं एक्शनस्क्रिप्ट 3.0 (फ्लेक्स) से सी # (डब्ल्यूपीएफ) से एक ऐप पोर्ट कर रहा हूं। एएस 3.0 को getTimer() नामक एक आसान उपयोगिता मिली है जो फ़्लैश वर्चुअल मशीन मिलीसेकंड में शुरू होने के बाद से समय लौटाती है। मैं थाआवेदन शुरू होने के बाद से बीत चुके समय

DateTime 
DispatcherTimer 
System.Diagnostics.Process 
System.Diagnostics.Stopwatch 

के रूप में कक्षाओं के माध्यम से सी # में खोज लेकिन this.It की तरह कुछ भी नहीं मिला लगता है me.For उदाहरण Unity3D को एक बहुत ही बुनियादी सुविधा है जो मोनो पर चलता है कुछ परिचित है। क्या मुझे यहां कुछ उपयोगिता याद आती है?

अग्रिम धन्यवाद।

उत्तर

26

Process.GetCurrentProcess().StartTime आपका मित्र है।

..so शुरुआत के बाद से समय बीत करने के लिए मिलता है:

DateTime.UtcNow - Process.GetCurrentProcess().StartTime.ToUniversalTime() 

वैकल्पिक रूप से, अगर आप अधिक डेफ़िनिशन चाहिए, System.Diagnostics.Stopwatch बेहतर हो सकता है। यदि हां, तो एक स्टॉपवॉच प्रारंभ होगा कि आपका ऐप्लिकेशन शुरू होता है:

Stopwatch sw=Stopwatch.StartNew(); 

फिर अपने निष्पादन चलाने के दौरान sw.Elapsed संपत्ति क्वेरी।

+0

चाहे एक या दूसरा चुनना चाहे परिशुद्धता का मामला नहीं बल्कि इसके बजाय जरूरतों का मामला है। 'Process.GetCurrentProcess()। स्टार्टटाइम 'को स्टॉपवॉच.स्टार्टन्यू()' के एक ही समय में कभी नहीं बुलाया जाएगा! तो यह इस बात पर निर्भर करता है कि उपयोगकर्ता समय कब शुरू करना चाहता है। :) –

+0

क्या आप सुनिश्चित हैं कि प्रक्रिया शुरू हो जाने के बाद प्रक्रिया। GetCurrentProcess समय लौटाता है? मैंने अभी एक चेक किया है: (DateTime.Now -Process.GetCurrentProcess()। स्टार्टटाइम) .TotalSeconds। इस समय ऐप ऊपर है मैं कंसोल के लिए समय प्रिंट करता हूं। यह 16-17 सेकंड से शुरू होता है। यह स्पष्ट रूप से बहुत अधिक है क्योंकि ऐप को शुरू करने में अधिकतम 4 सेकंड लग गए। –

+0

दिलचस्प। दस्तावेज़ मेरे साथ सहमत हैं। यदि यह वास्तव में मामला है, तो मैं कहूंगा कि यह एक नया सवाल है। – spender

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