2012-01-31 12 views
11

मैं अपने विंडोज स्टोर ऐप में टाइमर सेट करने की कोशिश कर रहा हूं।हम WinRT ऐप में टाइमर कैसे सेट करते हैं?

public void Start_timer() 
    { 

     Windows.UI.Xaml.DispatcherTimer timer = new DispatcherTimer();   
     timer.Tick += new Windows.UI.Xaml.EventHandler(timer_Tick); 
     timer.Interval = new TimeSpan(00, 1, 1); 
     bool enabled = timer.IsEnabled;    // Enable the timer 
     timer.Start();        // Start the timer  
     } 

बटन पर क्लिक करें मैं इस टाइमर को सेट करने के लिए उपर्युक्त विधि पर क्लिक करता हूं। लेकिन जब टिक के लिए इवेंटहाउंडर सेट किया गया है, तो मुझे त्रुटि मिलती है "संरक्षित स्मृति को पढ़ने या लिखने का प्रयास किया जाता है। यह अक्सर एक संकेत है कि अन्य स्मृति भ्रष्ट है।"

क्या हमें विंडोज स्टोर ऐप्स में टाइमर को अलग-अलग संभालने की आवश्यकता है?

+0

क्या होगा यदि आप टाइमर को दायर करते हैं, और टाइमर। टिक + = टाइमर_Tick; टाइमर। अंतराल = नया टाइमस्पैन (00, 1, 1); नियंत्रक के लिए ले जाएँ। इसके अलावा बूल सक्षम = टाइमर। सक्षम है; इसका कोई प्रभाव नहीं है, है ना? –

+1

@lukas क्षमा करें, आपका पहला अंक नहीं मिला। क्या आप कृपया विस्तृत – Sap

+2

निजी डिस्पैचर टाइमर टाइमर = नया डिस्पैचर टाइमर(); सार्वजनिक आपका क्लास() { टाइमर। टिक + = टाइमर_Tick; टाइमर। अंतराल = नया टाइमस्पैन (00, 1, 1); } –

उत्तर

10

समाधान, टाइमर विधि जैसे से बाहर

private DispatcherTimer timer = new DispatcherTimer(); 

ले जाएँ और यह ctor

public TheClass() 
{ 
    timer.Tick += timer_Tick; 
    timer.Interval = new TimeSpan(00, 1, 1); 
    timer.Start(); 
} 

हार्ड क्या पूरा कोड के बिना कारण नहीं है बताने के लिए में स्थापित करने के लिए है, लेकिन यह timer_Tick का व्यवहार हो सकता है।

+0

इसका नुकसान यह है कि यह यूआई थ्रेड पर चलता है। तो यदि टाइमर ईवेंट समय/सीपीयू उपभोग करने वाला कार्य निष्पादित कर रहा है, तो यूआई थोड़ा – Tilak

+0

लटकाता है यदि यह async नहीं किया जाता है :) – 70sCommander

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

  • कोई संबंधित समस्या नहीं^_^