c# - How do i prevent a StackOverflow error in the following code? -
मेरे पास follwing कोड है जो WCF कंसोल होस्टेड अनुप्रयोग में एक ऑटो रिफ्रेश फीचर प्रदान करता है।
जब कंसोल। रीडकी एक अवैध वर्ण स्वीकार करता है, यह रीडके की विधि को पुनरारंभ करता है। यदि उपयोगकर्ता इस कोड पर लंबे समय तक कुंजीपटल को मिशाने से रोकता है तो यह स्टैकऑवरफ्लो अपवाद में जाएगा।
क्या किसी के पास इस कोड को फिर से लिखने का कोई तरीका है, जिससे स्टैक को झटका नहीं पड़ता?
[STAThread] स्थिर शून्य मुख्य (स्ट्रिंग [] args) {bool restart = true; जबकि (पुनरारंभ करें) {उपयोग (var myWcfHost = नया MyWcfHost ()) {myWcfHost.start (); कंसोल.प्रकाश रेखा ("प्रेस को छोड़ने के लिए दबाएं या पुनरारंभ करने के लिए Ctrl + R दबाएं"); Restart = WaitForRestart (); }}} निजी स्टेटिक बूल WaitForRestart () {// स्पष्ट उपयोगकर्ता इनपुट कंसोल। कर्सर लिफ्ट = 0; कंसोल। लिखें (''); कंसोल.कर्सर लिफ्ट = 0; // पढ़ें उपयोगकर्ता इनपुट var key = Console.ReadKey (); यदि ((key.Modifiers & amp; कंसोलमॉडिफायर। नियंत्रण)! = 0 & amp; amp; कुंजी; कुंजी == ConsoleKey.R) {// सेटिंग्स कॉन्फ़िगरेशन प्रबंधक। रीफ्रेशएशन ("ऐप सेटिंग्स"); वापस सच; } अगर (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Escape) {वापसी झूठी; } वापसी WaitForRestart ();
एक लूप के साथ रिकर्सन को बदलें:
निजी स्टेटिक बूल WaitForRestart () {while (true) {// स्पष्ट उपयोगकर्ता इनपुट Console.CursorLeft = 0; कंसोल। लिखें (''); कंसोल.कर्सर लिफ्ट = 0; // पढ़ें उपयोगकर्ता इनपुट var key = Console.ReadKey (); यदि ((key.Modifiers & amp; कंसोलमॉडिफायर। नियंत्रण)! = 0 & amp; amp; कुंजी; कुंजी == ConsoleKey.R) {// सेटिंग्स कॉन्फ़िगरेशन प्रबंधक। रीफ्रेशएशन ("ऐप सेटिंग्स"); वापस सच; } अगर (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Escape) {वापसी झूठी; }}}
Comments
Post a Comment