पहले, समझते हैं कि Application.Idle है के बारे में "धागा बेकार" लेकिन आवेदन के यूआई धागे पर संदेश प्रसंस्करण के बारे में नहीं। (थ्रेड निष्क्रिय संदेश लूप निष्क्रिय से अलग है)
आपका WinForms ऐप एक संदेश लूप द्वारा संचालित होता है जो संदेश को कतार से बाहर खींचता है। जब वह कतार खाली हो जाती है, तो संदेश लूप एक शांत स्थिति में प्रवेश करता है, संदेश कतार में अगला संदेश प्रकट होने तक कुशलता से सो रहा है। यह सीपीयू प्रसंस्करण संसाधनों को संरक्षित करने में मदद करता है (एक लूप में कताई बर्बाद चक्र मशीन पर चल रही अन्य प्रक्रियाओं से सीपीयू समय दूर ले जाता है, इसलिए सब कुछ धीमा लगता है) और बिजली की खपत को कम करने में मदद करता है/लैपटॉप बैटरी जीवन का विस्तार करता है।
आपके ऐप का संदेश लूप आम तौर पर संदेश कतार बैकलॉग को अक्सर समाप्त करता है - जब आप एक संपादन बॉक्स में टाइप कर रहे होते हैं तो कीस्ट्रोक के बीच भी।
आवेदन। ऐडल इवेंट ऐप के प्राथमिक संचालन के साथ असीमित रूप से एप्लिकेशन हाउसकीपिंग कामों की देखभाल करने के लिए और कई धागे के साथ शामिल किए बिना एक सुविधाजनक स्थान बन गया है।
मेनू और बटन आम तौर पर निष्क्रिय होने पर उनके संबंधित कमांड स्टेटस से मेल खाने के लिए सक्षम या अक्षम होते हैं, उदाहरण के लिए। चूंकि दिखाई देने वाली उपस्थिति को केवल उपयोगकर्ता समय में अद्यतन करने की आवश्यकता है (उपयोगकर्ता दृश्य स्थिति को बदलकर आंतरिक राज्य परिवर्तनों के समय अंतर को समझ नहीं सकता है, दृश्य स्थिति को बाद में कुछ मिलीसेकंड बदलकर), एप्लिकेशन निष्क्रिय घटना है ऐसे हाउसकीपिंग कामों का ख्याल रखने का एक सरल और प्रभावी अवसर।
आप अपने Winforms ऐप के एप्लिकेशन में कोड डाल सकते हैं। डेटाबेस या नेटवर्क संसाधन की जांच करने के लिए अनुमति दें। हालांकि, आपको कुछ भी ऐसा करने के लिए सावधान रहना चाहिए जो "लंबे समय" लेता है क्योंकि यदि आप एप्लिकेशन को अवरुद्ध करते हैं। आईडी, आपका पूरा ऐप यूआई जमा हो जाएगा। कॉल अवरुद्ध करने के बजाय async कॉल का उपयोग करें।
इसके अलावा, ध्यान रखें कि जिस दर पर एप्लिकेशन.इडल इवेंट आग अत्यधिक चरम है - इसे प्रति सेकंड कई बार निकाल दिया जा सकता है या कई सेकंड तक आग नहीं लग सकती है, उपयोगकर्ता और आपका एप्लिकेशन क्या कर रहा है । यदि आप नियमित शेड्यूल पर डेटा अपडेट की जांच करना चाहते हैं, तो आपको एप्लीकेशन.इडल के बजाय टाइमर इवेंट का उपयोग करना चाहिए। यदि आप हर बार एप्लिकेशन के रूप में एसिंक नेटवर्क अनुरोध शुरू करते हैं। आग लगती है, तो आप प्रति सेकंड बहुत सारे (अनावश्यक) अनुरोधों के साथ अपने सर्वर को बाढ़ कर सकते हैं।
तो इसका मतलब है कि अन्य उपयोगकर्ताओं के अपडेट के कारण डेटाबेस से अद्यतन डेटा प्राप्त करने के लिए इसका अर्थ यह होगा कि यह निष्क्रिय राज्य होने पर भी किया जाना चाहिए, कुछ अन्य बचत या कुछ अन्य डेडलॉकिंग स्थितियों के बीच में नहीं। – peter