2010-12-30 53 views
46

मुझे पता है कि यह बेवकूफ लगता है, लेकिन मैंने टाइमर को रोकने के लिए सब कुछ करने की कोशिश की है, लेकिन टाइमर रुक जाएगा नहीं। मैं एक खेल पर काम कर रहा हूं और अगर कोई मुझे टाइमर को रोकने के लिए कह सकता है तो मैं सराहना करता हूं।सी # - आप टाइमर को कैसे रोकते हैं?

+7

एक अच्छी शुरुआत के लिए अपने कोड पोस्ट। – Pabuc

+1

हमें कुछ कोड दिखाएं – Kimtho6

+3

टाइमर कक्षाओं में से कौन सा? 4 ऐसे हैं जिन्हें मैं जानता हूं, बस बीसीएल में। – Oded

उत्तर

105

आप System.Timers.Timer उपयोग कर रहे हैं आप की तरह बंद कर सकते हैं, का उपयोग इस

timer.Change(Timeout.Infinite , Timeout.Infinite) 

या का उपयोग

timer.Stop(); 

अगर आप System.Windows.Forms.Timer

1

मान लिया जाये कि आप System.Windows.Forms.Timer का इस्तेमाल कर रही कर रहे हैं; इस

timer.Enabled = false 

अगर आप System.Threading.Timer उपयोग कर रहे हैं के बाद से वहाँ कुछ और करने के लिए कोई स्पष्ट संदर्भ था ... यदि यह मामला है ...

System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer(); 
myTimer.Stop(); 
17

System.Windows.Forms.Timer उपयोग कर रहे हैं: timer.Enabled = false;
System.Threading.Timer: timer.Change(Timeout.Infinite, Timeout.Infinite);
System.Timers.Timer: timer.Enabled = false; या timer.Stop();

5

टाइमर में से प्रत्येक के साथ .NET ढांचे में, यह संभव है कि टाइमर इसे रोकने से ठीक पहले आग लग जाए, इसलिए आप इसे रोकने के बाद कॉलबैक देखेंगे। false के लिए सेट है जब आप इसे रोकने के true करने के लिए एक bool सेट का उपयोग जब आप टाइमर चल चाहते हैं, और:

आप एक asynchronous callback context की तरह कुछ का उपयोग करना होगा। फिर अपने कॉलबैक को अपने संदर्भ की जांच करें कि यह वास्तव में चलाना चाहिए या नहीं।

+1

मुझे खुशी है कि मुझे यह जानकारी यहां भी मिली है। मैं अतिरिक्त चर के बजाए उपयोग कर रहा हूं, यह जांच रहा हूं कि टाइमर कॉलबैक में टाइमर अभी भी सक्षम है या नहीं। – Fanda

1

टाइमर पर निर्भर करता है। यदि यह थ्रेडिंग नेमस्पेस से है, तो इसका निपटान करें और जब आपको आवश्यकता हो, इसे फिर से बनाएं, या रीडर ईवेंट पर अपना टाइमर प्रतिनिधि प्रतीक्षा करें (msdn देखें)। सिस्टम। टाइमर नेमस्पेस में एक स्टार्ट और स्टॉप विधि है। मामले में आप System.Threading.Timer वर्ग का उपयोग कर रहे

15

तो, पिछले जवाब में जोड़ने के लिए, इस यह स्थायी रूप से बंद हो जाएगा एक ही उदाहरण का उपयोग करने के लिए कोई आगे मौका: अन्यथा

timer.Dispose() 

:

timer.Change(Timeout.Infinite, Timeout.Infinite) 
संबंधित मुद्दे