मेरे पास मेरे एप्लिकेशन में एक टीटीमर है जो हर 2 सेकंड में आग लगती है और मेरे इवेंट हैंडलर हैंडल टिमर इवेंट() को कॉल करती है। HandleTimerEvent() फ़ंक्शन साझा संसाधनों को संशोधित करता है और लौटने से पहले निष्पादित करने के लिए 10 सेकंड का समय ले सकता है। इसके अलावा, मैं कभी-कभी प्रोसेसर को छोड़ने के लिए इवेंट हैंडलर में स्लीप() को कॉल करता हूं।क्या TTimer.OnTimer ईवेंट हैंडलर पुनर्वित्तक है?
मुझे यकीन नहीं है कि घटनाओं को कॉल करने की बात आने पर सी ++ निर्माता का टीटीमर ऑब्जेक्ट कैसे काम करता है, इसलिए जिस परिदृश्य में मैंने अभी समझाया है, मुझे यह सोचने में मदद मिली है, विशेष रूप से, क्या पहले कॉल से पहले हैंडल टिमर इवेंट() को कॉल किया जाता है।
प्रश्न कुछ चीजों पर आता है।
क्या टीटीमर ऑब्जेक्ट घटनाओं को कतारबद्ध करता है?
क्या टीटीमर ऑब्जेक्ट एक पूर्व कॉल वापस आने से पहले मेरे ईवेंट हैंडलर को कॉल कर सकता है?
+1। टाइमर को अक्षम करने की प्रभावशीलता का प्रदर्शन करने के लिए (या यदि आप नहीं करते हैं तो गलत क्या हो सकता है) का एक आसान प्रदर्शन, टाइमर हैंडलर में एक संदेशबॉक्स दिखाएं। यदि आप प्रविष्टि पर टाइमर को अक्षम नहीं करते हैं, तो संदेशबॉक्स ढेर हो जाएंगे। –
आप टाइमर इवेंट हैंडलर में पुनर्वित्त को रोकने के लिए एक बूलियन ध्वज का भी उपयोग कर सकते हैं, लेकिन टाइमर को अक्षम करना बहुत आसान है। – dthorpe
TTimer उपयोग के लिए एक RAII-style क्लास, उपयोगी TTimerGuard क्लास के लिए https://forums.embarcadero.com/thread.jspa?messageID=171751𩻧 देखें। आपके कार्यान्वयन के आधार पर FINTERval उपयोग को समायोजित करने की आवश्यकता हो सकती है। –