2012-04-13 11 views
9

सिस्टम की विलम्बित घटना है। टिमर्स। सिस्टम प्रभावी ढंग से सिस्टम की टिक घटना के समान ही है। Windows.Forms.Timer?विलुप्त घटना वी टिक घटना?

विशिष्ट परिस्थितियों में दूसरे के बजाय एक का उपयोग करने के फायदे हैं?

+0

'System.Threading.Timer' एकमात्र ऐसा है जो 'विंडोज सर्वर 2008 आर 2' में मेरे लिए काम करता है हालांकि टाइमर। टिमर ने मेरे 'विंडोज 7 लैपटॉप' में काम किया। – Lijo

उत्तर

6

नेट फ्रेमवर्क में टाइमर की पूरी समझ के लिए इन लिंक को here और here देखें।

तीन प्रकार के टाइमर हैं।

  • System.Windows.Forms.Timer
  • System.Timers.Timer
  • System.Threading.Timer

मैं व्यक्तिगत रूप से System.Timers.Timer पसंद के रूप में यह धागा सुरक्षित है।

+0

क्योंकि मैं एक नौसिखिया हूं, मुझे यह पूछने की ज़रूरत है कि दूसरे के थ्रेड-असुरक्षित क्यों हैं? – whytheq

+1

@ व्हाइथेक थ्रेड-सेफ का मतलब है कि System.Timers.Timer क्लास के उदाहरणों को सुरक्षित रूप से एकाधिक धागे से एक्सेस किया जा सकता है। अन्य टाइमर कक्षाओं को इस मामले में मुद्दों का सामना करना पड़ेगा। बहुप्रचारित अनुप्रयोगों में थ्रेड सुरक्षा एक आम समस्या है। पूरी समझ के लिए लेखों की इस श्रृंखला को पढ़ें। http://www.albahari.com/threading/ – ABH

+0

इसलिए लेमन्स शब्दों में टाइमर चल रहा है चाहे अन्य थ्रेड चल रहे हों? – whytheq

11

अन्य उत्तर विस्तार का एक बहुत प्रदान करते हैं, लेकिन दो टाइमर आप का उल्लेख के बीच अंतर यह है कि अधिभावी System.Windows.Forms.Timer यूआई धागे पर कॉलबैक लागू करेगा, जबकि System.Timers.Timer थ्रेड पूल कोर से धागे में से एक का उपयोग करेगा ।

+0

यह कहने का एक शानदार तरीका है। –

+0

... तो 'System.Timers.Timer' थ्रेड-सुरक्षित है जबकि फॉर्म टाइमर नहीं है? और यदि मैं प्रत्येक प्रक्रिया को शुरू करने के लिए टाइमर का उपयोग करके समांतर प्रक्रियाओं को चलाने की इच्छा करता हूं तो 'System.Timers.Timer' उपयोग करने का सबसे अच्छा टाइमर है? – whytheq

+0

यह आपकी थ्रेडिंग आवश्यकताओं पर निर्भर करता है। यदि टाइमर निष्पादित करने वाला कोड जीयूआई को संशोधित करने की आवश्यकता है, तो फॉर्म टाइमर का उपयोग करें। साथ ही, यह देखते हुए कि (आमतौर पर) केवल एक ईवेंट थ्रेड होता है, इसका मतलब है कि फॉर्म टाइमर इवेंट हैंडलर को समवर्ती रूप से कभी भी नहीं कहा जाएगा (एक ही समय में कई बार)। हालांकि, आपको आम तौर पर जीयूआई थ्रेड पर गैर-जीयूआई संबंधित कार्यों को नहीं करना चाहिए (क्योंकि यह जीयूआई कम प्रतिक्रियाशील बनाता है) ताकि टाइमर टाइमर बेहतर होगा, यह चेतावनी के साथ कि अब आप समेकन को संभालने के लिए जिम्मेदार हैं। – SimonC