2010-08-06 17 views
16

मैं सी # का उपयोग कर .NET में एक विंडोज़ फॉर्म एप्लिकेशन लिख रहा हूं।मैं Winforms एप्लिकेशन में हाइबरनेट/नींद मोड को कैसे अच्छी तरह से संभाल सकता हूं?

मैं एक समस्या में भाग रहा हूं कि यदि मेरा कंप्यूटर चल रहा है जब कंप्यूटर नींद और/या हाइबरनेट स्थिति में जाता है (मुझे यकीन नहीं है कि इस समय, या दोनों, समस्या का कारण बनते हैं), जब मशीन फिर से जागता है कार्यक्रम सिर्फ लटकता है। इससे बाहर निकलने का एकमात्र तरीका टास्क मैनेजर से प्रक्रिया को मारना है।

यह स्पष्ट कारणों से है, जिस तरह से मैं प्रोग्राम को काम करना चाहता हूं। यहां तक ​​कि यदि मैं इन राज्यों में जाने पर प्रोग्राम को बंद कर देता हूं, तो यह ठीक होगा, लेकिन मुझे पूरा यकीन नहीं है कि यह कैसे करें या यदि इसे संभालने के लिए पूरी तरह से एक और अधिक शानदार तरीका है।

+0

सुनिश्चित नहीं है कि आपने विजुअल स्टूडियो का उल्लेख क्यों किया है। क्या समस्या तब होती है जब आप विजुअल स्टूडियो में डिबगिंग कर रहे होते हैं और आप हाइबरनेट/सोते हैं? या आपने सत्यापित किया है कि वीएस के साथ रिलीज कट के साथ ऐसा होता है? –

+1

शायद यह अपर्याप्त जानकारी है, लेकिन मैं एक प्रश्न प्रस्तुत करते समय जितना अधिक कर सकता हूं (मैं जो मानता हूं) प्रासंगिक जानकारी देता हूं। अपने प्रश्न का उत्तर देने के लिए, यह निश्चित रूप से उस मशीन पर रिलीज़ संस्करण पर होता है जिसमें दृश्य स्टूडियो भी नहीं होता है। – EatATaco

+0

यदि आप प्रासंगिक जानकारी प्रदान करना चाहते हैं, तो आपको अप्रासंगिक जानकारी प्रदान नहीं करनी चाहिए। "विजुअल स्टूडियो" के पास आपके प्रश्न के साथ कुछ लेना देना नहीं है। –

उत्तर

8

आप की जरूरत है:

using Microsoft.Win32; 

और इस कोड है:

void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) 
    { 
     if(e.Mode == PowerModes.Suspend) 
     { 
      this.GracefullyHandleSleep(); 
     } 
    } 

यह है कि मैं क्या साथ चला गया है।

2

यह article उन घटनाओं को सुनने में शामिल है। आपको कुछ ऐसा करना होगा जैसे WndProc ओवरराइड करें और PBT_APMSUSPEND ईवेंट सुनें।

6

उन घटनाओं को संभालना एक काम-आसपास हो सकता है। लेकिन इस तरह के काम को लागू करने से पहले मैं यह पता लगाने की कोशिश करता हूं कि जब ओएस हाइबरनेट में जाता है तो एप्लिकेशन क्या कर रहा था।

फांसी पर होता है हालांकि आवेदन सिर्फ निष्क्रिय था?

क्या एप्लिकेशन किसी प्रकार का निम्न-स्तरीय काम (डिवाइस ड्राइवर या बाहरी हार्डवेयर के साथ संचार) कर रहा है जिसे बाधित नहीं किया जाना चाहिए?

क्या एप्लिकेशन किसी प्रकार का नेटवर्क कनेक्शन उपयोग करता है?

+0

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

+0

ठीक है। सीरियल पोर्ट को बंद करने का प्रयास करें जब आप हाइबरनेट/नींद/स्टैंडबाय प्राप्त करते हैं और ओएस के बाद इसे खोलने के बाद इसे खोलें। समस्या की जड़ पर प्राप्त करने के लिए –

+0

+1 :) –

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