2011-08-21 21 views
8

मेरे पास एक सी # डब्ल्यूपीएफ एप्लीकेशन है जिसे बंद होने पर डेटा को सहेजने की आवश्यकता होती है। यदि उपयोगकर्ता प्रोग्राम बंद कर देता है तो विंडो बंद/बंद घटनाएं ठीक काम करती हैं, लेकिन अगर उपयोगकर्ता कंप्यूटर को बंद/बंद कर देता है तो उन्हें कॉल नहीं किया जाता है।एक डब्लूपीएफ अनुप्रयोग में विंडोज शट डाउन इवेंट

मुझे इस कार्यक्रम को Winforms प्रोग्राम (here, और here) में पकड़ने के तरीके मिल गए हैं। लेकिन मैं यह समझ नहीं सकता कि इसे एक WPF एप्लिकेशन में कैसे प्राप्त किया जाए।

मैं बंद को रोकने के लिए जब तक मेरा कार्यक्रम से बाहर निकलने के लिए तैयार है कोशिश कर रहा हूँ

उत्तर

14

वहाँ एक बिल्ट-इन ईवेंट Application.SessionEnding - इस घटना आग जब उपयोगकर्ता बंद लॉग या कंप्यूटर बंद हो जाता तुम सिर्फ ... उस पर सब्सक्राइब करने की आवश्यकता है और वहां अपना कोड सहेजने आदि की तारीख है ...

+0

यह पूरी तरह से कंप्यूटर को बंद करने से रोक देगा, जब तक कि मेरा प्रोग्राम बाहर निकलने के लिए तैयार न हो, मैं शटडाउन को रोकने की कोशिश कर रहा हूं। क्षमा करें मुझे ओपी में निर्दिष्ट करना चाहिए था। – zaza

+0

मैं वास्तव में समझ में नहीं आता ... यह घटना स्वयं कुछ भी नहीं करती है ... यदि आपका कोड जवाब देने में लंबा समय लगता है तो विंडोज उपयोगकर्ता से पूछेगा कि क्या वह आपके एप्लिकेशन को मारना चाहता है जिसे आप वास्तव में नहीं रोक सकते ... आपका ऐप इस घटना को संभालने के दौरान तेज़ होना चाहिए .. आप विंडोज़ को शट डाउन न करने की कोशिश कर सकते हैं (इवेंट हैंडलर में 'e.Cancel = true;' सेट करना) ... – Yahia

+0

ss sry, यह मेरी तरफ से गलतफहमी थी। मैंने सोचा कि मुझे अपने आवेदन में ईवेंट कॉल करने से पहले सत्र EndingCancelEventArgs ईवेंट रद्द करना था। आपका समाधान पूरी तरह से काम करता है। – zaza