प्रारंभ करना


एलीना: आपके उत्तर के लिए धन्यवाद। इस MSDN डॉक्टर (msdn. microsoften-uslibraryhellip) के निचले भाग में कुछ नोट्स हैं जो संभावित डेडलॉक के बारे में चेतावनी देते हैं यदि आप दोनों रीडायरेक्ट किए गए स्टडआउट और स्टर्डर धाराओं के अंत में पढ़ते हैं तो सिंक्रोनस रूप से। यह कहना मुश्किल है कि क्या आपका समाधान इस मुद्दे के लिए अतिसंवेदनशील है। साथ ही, ऐसा प्रतीत होता है कि आप प्रक्रिया 39 stdoutstaderr आउटपुट को वापस इनपुट के रूप में भेज रहे हैं। क्यूं कर। ) ndash मैथ्यू पियाट 26 सितंबर 16 4:42 यह 4.5 और बाद के संस्करण के लिए एक और आधुनिक उम्मीदवार, कार्य समानांतर पुस्तकालय (टीपीएल) आधारित समाधान है। उपयोग का उदाहरण कार्यान्वयन 5 अक्टूबर को 10 बजे उत्तर दिया गया I बात यह है कि यह सरल और बेहतर तरीका है (हमें ऑटोआरससेट एवेन्ट की ज़रूरत नहीं है): उत्तर 14 जून 12 बजे 14:29 उत्तर दिया गया है, लेकिन आप ऐसा नहीं करना चाहिए. फ़ाइलनाम पथ quotggsci. exequot quot अपने कोड को सरल बनाने के लिए या शायद कुछ quotecho कमांड के बराबर path quotggsci. exequot का पालन करने के लिए obeycommand. txtquot का पालन करें अगर आप वास्तव में एक अलग obeycommand. txt फ़ाइल का उपयोग नहीं करना चाहते हैं ndash Amit Naidu Jun 4 13 at 22:03 आपके समाधान में ऑटोआरससेटएवेंट की ज़रूरत नहीं है लेकिन आप चुनाव करते हैं। जब आप इवेंट का उपयोग करने के बजाय पोल करते हैं (जब वे उपलब्ध होते हैं) तो आप बिना किसी कारण के लिए सीपीयू का उपयोग कर रहे हैं और इससे पता चलता है कि आप खराब प्रोग्रामर हैं AutoResetEvent का उपयोग करते हुए अन्य के साथ तुलना में आपका समाधान वास्तव में खराब है। (लेकिन मैंने आपको -1 नहीं दिया क्योंकि आपने मदद करने की कोशिश की है)। ndash एरिक Ouellet 7 नवंबर 14 पर 18:38 मैं एक ही मुद्दा रहा था, लेकिन कारण अलग था हालांकि यह विंडोज 8 के तहत होगा, लेकिन विंडोज 7 के तहत नहीं। निम्नलिखित पंक्ति ने समस्या का कारण देखा है। समाधान UseShellExecute को अक्षम करने के लिए नहीं था अब मुझे एक शेल पॉपअप विंडो मिली है, जो अवांछित है, लेकिन कुछ खास नहीं होने की प्रतीक्षा करने वाले कार्यक्रम से बेहतर है। तो मैंने इसके लिए निम्नलिखित कार्य-जोड़ा जोड़ा: अब मुझे केवल परेशानी का कारण यह है कि विंडोज 8 के तहत ऐसा क्यों हो रहा है पहली जगह पर। 13 जनवरी को 10:35 को उत्तर दिया मैंने एक ऐसा वर्ग बनाने की कोशिश की जो आपकी समस्या को हल करेगी जो अकसरसोनस स्ट्रीम का उपयोग करते हुए मार्क बियरर्स, रोब, स्टीवज्यू उत्तर लेते हुए आपकी समस्या को हल करेंगे। ऐसा करने से मुझे एहसास हुआ कि एसिंक्रोनस प्रोसेस आउटपुट स्ट्रीम से संबंधित एक बग पढ़ा गया है। आप ऐसा नहीं कर सकते: आपको सिस्टम प्राप्त होगा। अज्ञातऑपरेशन अपवाद मानकऑटो को पुनः निर्देशित नहीं किया गया है या प्रक्रिया अभी तक शुरू नहीं हुई है। फिर आपको प्रक्रिया शुरू होने के बाद एसिंक्रोनस आउटपुट को पढ़ना होगा: ऐसा करने से, रेस की स्थिति बनाओ क्योंकि आउटपुट स्ट्रीम आपको एसिंक्रोनस में सेट करने से पहले डेटा प्राप्त कर सकता है: तब कुछ लोग कह सकते हैं कि आपको स्ट्रीम से पहले ही पढ़ना होगा इसे अतुल्यकालिक से सेट करें लेकिन यही समस्या तब होती है तुल्यकालिक पढ़ने के बीच एक दौड़ की स्थिति होगी और स्ट्रीम को अतुल्यकालिक मोड में सेट किया जाएगा। वास्तविक प्रक्रिया में एक प्रक्रिया के आउटपुट स्ट्रीम के सुरक्षित असिंक्रोनस पठन को प्राप्त करने का कोई तरीका नहीं है, प्रक्रिया और प्रक्रिया स्टार्टइन्फो तैयार की गई है। आप संभावित रूप से अतुल्यकालिक पठन का उपयोग कर रहे हैं जैसे आपके केस के लिए अन्य उपयोगकर्ताओं द्वारा सुझाई गई। लेकिन आपको पता होना चाहिए कि आप दौड़ की स्थिति के कारण कुछ जानकारी याद कर सकते हैं। हाय, मैं एक सी कन्सोल एप्लिकेशन विकसित कर रहा हूं जो एक कमांडलाइन शुरू करता है और किसी अन्य कमांड के माध्यम से कुछ डेटा प्राप्त करता है (जो इस चर्चा में अप्रासंगिक है)। आखिरकार मुझे कमांड लाइन में कुछ डाटा मिलेंगे और मुझे केवल उस की अंतिम पंक्ति चाहिए। मैंने निम्न कोड का इस्तेमाल किया है: प्रक्रिया। स्टार्टइन्फ़ोफाइलनाम quotcmd. exequot प्रक्रिया। स्टार्टइनफ़ो.संप्यूटरस्टाइनइनप्रूफ. प्रति प्रक्रिया.स्टार्टइनफ़ो.संप्यूटरस्टाउडआउटपुट true मैंने प्रक्रिया का इस्तेमाल किया है। मानक आज्ञाओं को लिखने के लिए कंसोल की आवश्यकता है I लेकिन अगर Process. StartInfo. RedirectStandardOutput सत्य है, तो मुझे बयान प्रक्रिया का उपयोग करते हुए आवश्यक आउटपुट नहीं मिल रहा है। मानकऑप्टपुट। रीडटेओंड ()। स्प्लिट (एन), जबकि ReadLine विकल्प ठीक काम कर रहा है और मुझे प्रदर्शित की गई टेक्स्ट की पहली पंक्ति मिल रही है। चूंकि हर बार कंसोल पर जो डेटा मिलता है, मैं अपने उत्पादन को कहां से प्राप्त कर सकता हूं, यह किसी विशिष्ट लोकार्ड को मुश्किल नहीं कर सकता। यहां तक ​​कि अगर मैं बयान प्रक्रिया पर एक घड़ी डाल दिया। मानक। आउटपुट। रीड एंडेड ()। स्प्लिट (एन) मैं एक समारोह समयबाह्य अपवाद हो रही है कृपया मुझे इस समस्या के साथ मदद करें गुरुवार, 07 अगस्त, 2008 5:44 पूर्वाह्न इसलिए मैंने मांजस कोड को कॉपी किया। मायप्रोसेस quotcmd. exequot सबसे पहले, मैंने एक readToEnd () टाइम-आउट के साथ quotipconfigquot आदेश भेजा है ब्लॉकों में पढ़ने की कोशिश की, असफल भी। WaitForInputIddle () की कोशिश की, लेकिन भूल गए सीएमडी में कोई ग्राफिकल इंटरफ़ेस नहीं है, असफल भी है। तो मुझे स्ट्रीम समाप्त करने के लिए सीएमडी की ज़रूरत है अगर मैं इसे कभी भी पढ़ना चाहता था। ठीक है तो बाहर निकलें तो मैंने पहले से बाहर निकलने के आदेश सहित सभी मेरे आदेशों को भेजने की कोशिश की, फिर पढ़ना। sIn. WriteLine (quotipconfigquot) sIn. WriteLine (quotipconfig allquot) sIn. WriteLine (quotexitquot) स्ट्रिंग strOutPut sOut. ReadToEnd () एक आकर्षण की तरह काम करता है मेरे रीडटेन्ड () आधा सेकंड में एक स्ट्रिंग लौटाता है, और मुझे सारी जानकारी मिलती है जो मुझे चाहिए। -) क्या यह आपके लिए किसी भी मदद का हो सकता है, गौरी हम जो असंभव है, असंभव है, बस थोड़ी अधिक समय लगता है। - स्टीवन पार्कर जैक 321 द्वारा उत्तर के रूप में चिह्नित किया गया सोमवार, 11 अगस्त, 2008 5:44 पूर्वाह्न गुरुवार, 07 अगस्त 2008 7:51 पूर्वाह्न ReadToEnd () गतिरोध का कारण है, खासकर जब आप WaitForExit () के बाद कोड भेजते हैं या भेजते हैं बहुत सारे इनपुट प्रक्रिया इसकी आउटपुट को बफर में लिख रही है, बफर बहुत बड़ा नहीं है (2KB मुझे लगता है) यह आप इस बफ़र की सामग्री को न पढ़ते हैं, वाइथ रीडलाइन () कहते हैं, प्रक्रिया स्टाल होगी, बफर को रिक्त करने की प्रतीक्षा कर रही है। आपका प्रोग्राम बदले में स्टाल करेगा क्योंकि WaitForExit () कभी भी नहीं लौटाएगा या लिखित लाइन () कॉल स्टाल करेगा क्योंकि प्रक्रिया अब इनपुट नहीं पढ़ रही है। यदि आपके परिदृश्य में ऐसा होता है, तो आपको शुरुआती ओपनपुटरेडलाइन () के साथ अतुल्यकालिक पढ़ने की आवश्यकता होगी। हंस पैसेंट जैक 321 द्वारा जवाब के रूप में चिह्नित किया गया सोमवार, 11 अगस्त, 2008 5:44 पूर्वाह्न गुरुवार, 07 अगस्त, 2008 12:13 PM सभी उत्तर आपको प्रक्रिया को भी सेट करने की आवश्यकता है। स्टार्टइनफ़ो.उसे शेलफिक्लेम को गलत। जैक 321 द्वारा उत्तर के रूप में चिह्नित किया गया सोमवार, 11 अगस्त, 2008 5:43 पूर्वाह्न, ऊपर एक बहुत अच्छा मानक उत्तर है, हालांकि। मुझे नहीं लगता कि उद्धरण धारा समाप्त होता है सीडीडी-बॉक्स से कुछ भी नहीं भेजा गया है यह इंगित करने के लिए कि धारा समाप्त हो गई है। एक वेबपेज आप लोड करने पर विचार करें, एक बार पूरे एचटीएमएल-कोड आपके पीसी तक पहुंच गया है, स्ट्रीम किया जाता है। एक फाइल पढ़ने के साथ ही, एक बार जब आप आखिरी चरित्र पर पहुंच जाते हैं, तो स्ट्रीम किया जाता है। हालांकि सीएमडी के साथ, यह स्ट्रीम नहीं है, उद्धरण। यह सिर्फ नए इनपुट की प्रतीक्षा करता है, फिर अगर आप इसे दूसरे कमांड देते हैं, तो इसका आउटपुट फिर से होगा हम्म, मुझे अपने आप को अंग्रेजी में फिर से परेशान करने में परेशानी होती है, मेरी क्षमायाचना। वैसे भी, मुझे नहीं लगता है कि सीएमडी-आउटपुट-स्ट्रीम पर ReadToEnd () का उपयोग करने के लिए आप जो कुछ भी कर सकते हैं, जब तक कि आप इसे quotexitquot आदेश नहीं भेजते क्या आपने एक के साथ रीडलाइन () को संयोजित करने की कोशिश की है लाइन का विश्लेषण (यानी आपको खाली लाइनें मिलती हैं), या बी। Process. WaitForIddleInput () आदेश हम असंभव है, असंभव बस थोड़ी अधिक समय लेता है। - स्टीवन पार्कर गुरुवार, 07 अगस्त, 2008 7:35 पूर्वाह्न यदि आप सीएमडी प्रक्रिया चल रहे हैं इनपुट स्ट्रीम में quotEXITquot लिखने के लिए याद रखें, गुरुवार, 07 अगस्त, 2008 7:51 पूर्वाह्न तो मैंने मांजस कोड को कॉपी किया। मायप्रोसेस quotcmd. exequot सबसे पहले, मैंने एक readToEnd () टाइम-आउट के साथ quotipconfigquot आदेश भेजा है ब्लॉकों में पढ़ने की कोशिश की, असफल भी। WaitForInputIddle () की कोशिश की, लेकिन भूल गए सीएमडी में कोई ग्राफिकल इंटरफ़ेस नहीं है, असफल भी है। तो मुझे स्ट्रीम समाप्त करने के लिए सीएमडी की ज़रूरत है अगर मैं इसे कभी भी पढ़ना चाहता था। ठीक है तो बाहर निकलें तो मैंने पहले से बाहर निकलने के आदेश सहित सभी मेरे आदेशों को भेजने की कोशिश की, फिर पढ़ना। sIn. WriteLine (quotipconfigquot) sIn. WriteLine (quotipconfig allquot) sIn. WriteLine (quotexitquot) स्ट्रिंग strOutPut sOut. ReadToEnd () एक आकर्षण की तरह काम करता है मेरे रीडटेन्ड () आधा सेकंड में एक स्ट्रिंग लौटाता है, और मुझे सारी जानकारी मिलती है जो मुझे चाहिए। -) क्या यह आपके लिए किसी भी मदद का हो सकता है, गौरी हम जो असंभव है, असंभव है, बस थोड़ी अधिक समय लगता है। - स्टीवन पार्कर जैक 321 द्वारा उत्तर के रूप में चिह्नित किया गया सोमवार, 11 अगस्त, 2008 5:44 पूर्वाह्न गुरुवार, 07 अगस्त 2008 7:51 पूर्वाह्न ReadToEnd () गतिरोध का कारण है, खासकर जब आप WaitForExit () के बाद कोड भेजते हैं या भेजते हैं बहुत सारे इनपुट प्रक्रिया इसकी आउटपुट को बफर में लिख रही है, बफर बहुत बड़ा नहीं है (2KB मुझे लगता है) यह आप इस बफ़र की सामग्री को न पढ़ते हैं, वाइथ रीडलाइन () कहते हैं, प्रक्रिया स्टाल होगी, बफर को रिक्त करने की प्रतीक्षा कर रही है। आपका प्रोग्राम बदले में स्टाल करेगा क्योंकि WaitForExit () कभी भी नहीं लौटाएगा या लिखित लाइन () कॉल स्टाल करेगा क्योंकि प्रक्रिया अब इनपुट नहीं पढ़ रही है। यदि आपके परिदृश्य में ऐसा होता है, तो आपको शुरुआती ओपनपुटरेडलाइन () के साथ अतुल्यकालिक पढ़ने की आवश्यकता होगी। हंस पैसेंट सोमवार, अगस्त 11, 2008 5:44 बजे गुरुवार, 07 अगस्त, 2008 12:13 PM द्वारा जवाब के रूप में चिह्नित किया गया है माइक्रोसॉफ्ट एमएसडीएन वेब साइट की आपकी राय को समझने के लिए एक ऑनलाइन सर्वेक्षण आयोजित कर रहा है। यदि आप भाग लेना चुनते हैं, तो ऑनलाइन सर्वेक्षण आपको प्रस्तुत किया जाएगा जब आप एमएसडीएन वेब साइट छोड़ देंगे। क्या आप भागीदारी करना चाहेंगे

Comments