2016-01-28 10 views
9

डेस्कटॉप पर चलने वाला एक यूडब्ल्यूपी ऐप शीर्ष एक्स बटन से बंद किया जा सकता है लेकिन इसके लिए कोई घटना नहीं है। यह ज्ञात है कि फोन और टैबलेट पर एक ऐप को Suspending ईवेंट पर भरोसा करना चाहिए, भले ही यह कैसे ट्रिगर हो और फिर ऐप को ApplicationExecutionState पर भरोसा करना चाहिए।डेस्कटॉप पर यूडब्ल्यूपी शीर्ष एक्स बटन द्वारा बंद - कोई घटना

हालांकि, यहां एक (शायद) सामान्य परिदृश्य है: फोन पर Suspending ईवेंट पर्याप्त है और यदि कोई वीओआईपी कॉल चल रहा है तो ऐप को निलंबित होने के बाद ओएस द्वारा संचालित किया जाएगा। डेस्कटॉप पर बंद करें बटन की अपेक्षा की जाती है, उपयोगकर्ता द्वारा, ऐप को पूरी तरह से बंद करने के लिए। तो यदि कोई कॉल चल रहा है तो इसे फांसी दी जानी चाहिए और कुछ संसाधन जारी किए जाने चाहिए।

उपयोगकर्ता कैसे "बंद करें" बटन पर क्लिक करता है (और केवल अगर) यूडब्ल्यूपी ऐप डेस्कटॉप पर चल रहा है?

उत्तर

4

आधिकारिक page से एप्लिकेशन जीवन चक्र के बारे में:

वहाँ संकेत मिलता है कि उपयोगकर्ता एप्लिकेशन बंद कोई विशेष घटना है।

बंद-उपयोगकर्ता-व्यवहार व्यवहार: यदि आपके ऐप को विंडोज द्वारा बंद होने की तुलना में उपयोगकर्ता द्वारा बंद होने पर कुछ अलग करने की ज़रूरत है, तो आप यह निर्धारित करने के लिए सक्रियण ईवेंट हैंडलर का उपयोग कर सकते हैं कि ऐप को समाप्त कर दिया गया था या नहीं उपयोगकर्ता या विंडोज द्वारा।

तो इस के अनुसार वहाँ है कोई (स्पष्ट) जिस तरह से उपयोगकर्ता से पहले एप्लिकेशन बंद हो लेकिन केवल तब इसे पुन: प्रारंभ ऐप्स को बंद कर दिया है, तो पता करने के लिए। बहुत बुरा।

1

मैंने Window.Current.Closed ईवेंट के साथ अपना मूल उत्तर हटा दिया, क्योंकि यदि आपके पास केवल एक विंडो उदाहरण है तो यह काम नहीं कर रहा है। CoreApplication.Exiting भी है, लेकिन this विषय के आधार पर यह निर्णय नहीं करता है। ऐसा ज्ञात मुद्दा माना जाता है जिसे भविष्य में तय किया जा सकता है। अंत में, ऐसा लगता है कि यह निर्धारित करने का कोई स्पष्ट तरीका नहीं है कि ऐप बंद हो रहा है, केवल तभी जब इसे निलंबित कर दिया जाए।

हालांकि, Window.Current ऐप बंद होने पर VisibilityChanged ईवेंट आग लगती है। समस्या यह है कि ऐप को कम किया जाता है और शायद कुछ अन्य मामलों में इसे निकाल दिया जाता है। लेकिन मुझे लगता है कि Suspending के साथ संयोजन में आप (अधिक या कम) सुरक्षित रूप से निर्धारित कर सकते हैं कि डेस्कटॉप ऐप बंद हो रहा है। अच्छी बात यह है कि VisibilityChangedSuspending से पहले निकाल दिया गया है और आप इसे मूल्य बचा सकते हैं और इसे OnSuspending हैंडलर में जांच सकते हैं, जिसके बाद आपको यह तय करना है कि आपको कोई सफाई या अन्य काम करने की आवश्यकता है या नहीं।

+0

लेकिन जब ओएस ऐप को बंद करता है तो 'दृश्यता चेंज' ईवेंट निकाल दिया जाएगा। इसलिए ओएस-क्लोजिंग और यूजर क्लोजिंग के बीच कोई अंतर नहीं है। – tomab

+0

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

+0

तो हम * अनुमान लगा सकते हैं * ऐप बंद कर दिया गया है यदि हमें 'दृश्यता परिवर्तन' के बाद 'निलंबन' ईवेंट प्राप्त होता है। क्या यह स्वाभाविक रूप से नहीं हो सकता है यदि उपयोगकर्ता ऐप को कम करता है और बाद में विंडोज़ हमारे ऐप को निलंबित करने का फैसला करता है? फिर हम गलत तरीके से अनुमान लगाएंगे * ऐप बंद हो रहा है, क्योंकि उपयोगकर्ता इसे बाद में अधिकतम कर सकता है और फिर से शुरू कर सकता है? – Felix

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