एक कंसोल अनुप्रयोग में विश्वसनीय टाइमर

मुझे पता है कि .NET में तीन टाइमर प्रकार हैं (देखें .NET Framework क्लास लाइब्रेरी में टाइमर क्लासेस की तुलना करना )। मैंने थ्रेडेड टाइमर चुना है क्योंकि मुख्य थ्रेड व्यस्त होने पर अन्य प्रकार बहाव कर सकते हैं, और मुझे इसे विश्वसनीय होने की आवश्यकता है।

जिस टाइमर टाइमर के नियंत्रण में काम करता है उसे एक और थ्रेड पर रखा जाता है ताकि यह व्यस्त होने पर पैरेंट थ्रेड पर पूरा होने वाले काम के साथ हमेशा टिक टिक सके।

कंसोल एप्लिकेशन में इस टाइमर के साथ समस्या यह है कि टाइमर दूसरे थ्रेड पर टिक रहा है, जबकि मुख्य धागा कुछ भी नहीं कर रहा है, इसलिए एप्लिकेशन बंद हो जाता है।

मैंने जबकि सत्य लूप जोड़ने का प्रयास किया, लेकिन टाइमर बंद होने पर मुख्य धागा बहुत व्यस्त है।

0
जोड़ा संपादित
विचारों: 10

1 उत्तर

आप मुख्य थ्रेड को अवरुद्ध करने के लिए Console.ReadLine() जैसे कुछ का उपयोग कर सकते हैं, इसलिए अन्य पृष्ठभूमि धागे (जैसे टाइमर थ्रेड) अभी भी काम करेंगे। निष्पादन को अवरुद्ध करने के लिए आप AutoResetEvent का भी उपयोग कर सकते हैं, फिर (जब आपको आवश्यकता हो) आप मुख्य थ्रेड को रिलीज़ करने के लिए उस AutoResetEvent ऑब्जेक्ट पर सेट() विधि को कॉल कर सकते हैं। यह भी सुनिश्चित करें कि टाइमर ऑब्जेक्ट का आपका संदर्भ दायरे और कचरे से बाहर नहीं निकलता है।

0
जोड़ा