मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जो कुछ बच्चे विंडो प्रदर्शित करता है जिसे या तो उपयोगकर्ता द्वारा बंद किया जा सकता है या स्वचालित रूप से बंद हो जाता है। कुछ अपवादों को डिबग करने के दौरान, मुझे पता चला कि मैं Hide()
जैसी विधियों को कॉल करने की कोशिश कर रहा था जो पहले ही बंद हो चुके थे; कोड की यह विशेष शाखा दोनों मामलों के लिए आम थी और मैंने यह ध्यान नहीं दिया था।आप कैसे बताते हैं कि एक WPF विंडो बंद है या नहीं?
मेरे पहले विचारों में से एक Window
पर एक संपत्ति की तलाश करना था जो इंगित करेगा कि खिड़की बंद कर दी गई थी। मुझे एक नहीं लगता है। WinForms में, मैं IsDisposed संपत्ति को कुछ हद तक विश्वसनीय संकेतक के लिए देखता हूं कि फॉर्म बंद कर दिया गया था (यह विश्वसनीय रूप से एक संवाद के लिए काम नहीं करेगा लेकिन मैं संवाद के साथ काम नहीं कर रहा हूं।) मुझे कुछ भी दिखाई नहीं दे रहा है Window
पर समतुल्य। Window.Close()
के लिए प्रलेखन विधि द्वारा बदला गया कोई भी गुण इंगित नहीं करता है। क्या मुझे कुछ स्पष्ट याद आ रहा है, या यह जानने का एकमात्र तरीका है कि Closed
ईवेंट को संभालने के लिए विंडो बंद कर दी गई है या नहीं? ऐसा लगता है कि एक साधारण कार्य के लिए एक कठोर आवश्यकता है।
यह गुण एक और धागे से पहुँचा नहीं जा सकता, और असीम निपटाए विंडो ब्लॉक करने के लिए एक कॉल लागू। तो मैं इसके लिए अपने स्वयं के आवृत्ति चर का उपयोग कर समाप्त हुआ और इसे इस तरह से एक्सेस करता हूं जिसमें सिंक्रनाइज़ेशन की आवश्यकता नहीं होती है (ऑनक्लोज्ड विधि की शुरुआत में isClosed = true है, फिर इसे बाद में पढ़ें)। – ygoe
यदि ईवेंट अभी भी संसाधित हो रहा है तो यह काम नहीं करता है।उदाहरण के लिए यदि कोई बटन क्लिक करें हैंडलर विंडो बंद कर देता है और फिर दूसरा खुलता है और दूसरी विंडो की प्रारंभिकता पहले के 'IsLoaded' की जांच करती है, तो यह' सत्य 'वापस आ जाएगी। – nmclean