2009-01-14 13 views
17

में परिवर्तन का पता लगाएं क्या वैश्विक स्क्रीन रिज़ॉल्यूशन में बदलाव के चलते किसी ईवेंट को हुक करने का कोई आसान तरीका है?रेज़ोल्यूशन सी # WinForms

Microsoft.Win32.SystemEvents.DisplaySettingsChanged 

आप अधिक जानकारी के लिए this पेज का उल्लेख कर सकते:

उत्तर

29

निम्न इवेंट संभाल।

आप SystemEvents क्लास पर msdn article भी देखना चाहते हैं।

6

दो घटनाएं हैं - SystemEvents.DisplaySettingsChanged और SystemEvents.DisplayedSettingsChanging जिन्हें आप संभाल सकते हैं। ध्यान दें कि दोनों घटनाएं स्थैतिक हैं और आपको अपने प्रोग्राम से बाहर निकलने से पहले अपने हैंडलर को अलग करना होगा।

+6

"आपको अपने प्रोग्राम से बाहर निकलने से पहले अपने हैंडलर को अलग करने की आवश्यकता होगी": बिल्कुल नहीं! एक बार जब प्रक्रिया बंद हो जाती है तो इससे कोई फर्क नहीं पड़ता कि आपने सदस्यता समाप्त की है या नहीं ... यह केवल उन ऑब्जेक्ट्स हैं जो ईवेंट की सदस्यता ले चुके हैं, जीसी के लिए योग्य नहीं होंगे और मेमोरी में रहेंगे –

+0

आपको हैंडलर के ऑब्जेक्ट से पहले अपने हैंडलर को अलग करना होगा जीसीड होगा अगर प्रक्रिया निकलती है, इससे कोई फर्क नहीं पड़ता। यदि प्रदर्शन परिवर्तनों की देखभाल करना बंद करने के बाद आपका ऐप चल रहा है, तो आपको उस बिंदु पर सदस्यता समाप्त करनी चाहिए ताकि जीसी ठीक से काम करे। – user169771

+2

दस्तावेज़ीकरण कहता है: "चूंकि यह एक स्थिर घटना है, इसलिए जब आपके आवेदन का निपटारा किया जाता है, तो आपको अपने ईवेंट हैंडलर को अलग करना होगा, या मेमोरी लीक का नतीजा होगा।" https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.displaysettingschanged.aspx?f=255&MSPPError=-2147217396 – CLS

4

यदि आपका प्रोग्राम (प्रक्रिया) मर रहा है तो आपको स्थिर घटनाओं (या किसी भी घटना) की सदस्यता समाप्त करने की आवश्यकता नहीं है। ओएस ओएस को आपकी प्रक्रिया की सभी याददाश्त जारी करने का ख्याल रखेगा। हालांकि, यदि आप किसी स्थैतिक ईवेंट की सदस्यता लेते हैं या किसी ऑब्जेक्ट को ऑब्जेक्ट की ओर इशारा करते हुए किसी ऑब्जेक्ट को इंगित करते हैं, तो आप ऑब्जेक्ट की सदस्यता लेते हैं, और आप चाहते हैं कि वह ऑब्जेक्ट जीसी के लिए योग्य हो - आपको ईवेंट में सदस्यता समाप्त करने की आवश्यकता है।

और हमेशा सभी घटनाओं की सदस्यता समाप्त करने के लिए हमेशा अच्छा अभ्यास होता है। आपके स्रोत कोड/उत्पाद के जीवनकाल के दौरान आप कभी भी नहीं जानते कि आपकी ऑब्जेक्ट्स का जीवनकाल (किसी और द्वारा) बदल दिया गया है ...

संबंधित मुद्दे