Wednesday 24 January 2018

सी # - standardoutput - waitforexit


System. Diagnostics. ProcessStartInfoClass विधानसभा: System. dll नामस्थान: System. Diagnostics सारांश प्रक्रिया शुरू करते समय उपयोग किए गए मूल्यों का एक सेट निर्दिष्ट करता है। सी सिंटैक्स: सार्वजनिक सीलबंद श्रेणी प्रक्रिया स्टार्टइन्फो रिमार्क्स प्रोसेसस्टटाइन्फ़ो प्रोसेस घटक के साथ संयोजन में प्रयोग किया जाता है। जब आप प्रोसेस क्लास का इस्तेमाल करते हुए एक प्रक्रिया शुरू करते हैं, तो चलने की प्रक्रिया में संलग्न होने पर आपके पास उपलब्ध जानकारी के अलावा प्रक्रिया की प्रक्रिया हो सकती है। आपके द्वारा शुरू की जाने वाली प्रक्रिया के अधिक से अधिक नियंत्रण के लिए आप ProcessStartInfo वर्ग का उपयोग कर सकते हैं। आपको कम से कम ProcessStartInfo. FileName संपत्ति को सेट करना होगा, या तो मैन्युअल रूप से या कन्स्ट्रक्टर का उपयोग करना चाहिए। फ़ाइल नाम किसी भी आवेदन या दस्तावेज़ है। यहां एक दस्तावेज को किसी भी फाइल प्रकार के रूप में परिभाषित किया गया है जिसमें उसके साथ जुड़ी एक खुली या डिफ़ॉल्ट कार्यवाही है आप ऑपरेटिंग सिस्टम के माध्यम से उपलब्ध फ़ोल्डर विकल्प संवाद का उपयोग करके अपने कंप्यूटर के लिए पंजीकृत फ़ाइल प्रकार और उसके संबद्ध अनुप्रयोग देख सकते हैं। उन्नत बटन एक संवाद की ओर जाता है जो दिखाता है कि क्या एक विशिष्ट पंजीकृत फ़ाइल प्रकार से जुड़ी एक खुली क्रिया है। इसके अतिरिक्त, आप अन्य गुण सेट कर सकते हैं जो कि फाइल के साथ कार्रवाई करने के लिए परिभाषित करते हैं। आप System. Diagnostics. ProcessStartInfo. Verb (साझा स्रोत CLI) संपत्ति पर समर्थित नहीं करने के लिए ProcessStartInfo. FileName संपत्ति के प्रकार के लिए विशिष्ट मान निर्दिष्ट कर सकते हैं। उदाहरण के लिए, आप एक दस्तावेज़ प्रकार के लिए प्रिंट निर्दिष्ट कर सकते हैं। इसके अतिरिक्त, आप ProcessStartInfo. Arguments निर्दिष्ट कर सकते हैं गुणों को कमांड लाइन तर्क होने के लिए फ़ाइलों को खोलने के लिए प्रक्रिया खोलें। उदाहरण के लिए, यदि आप ProcessStartInfo. FileName प्रॉपर्टी में एक टेक्स्ट एडिटर एप्लिकेशन निर्दिष्ट करते हैं, तो आप संपादक द्वारा खोले जाने वाले टेक्स्ट फ़ाइल को निर्दिष्ट करने के लिए प्रोसेसस्टार्टइन्फो.अग्रेगमेंट प्रॉपर्टी का उपयोग कर सकते हैं। मानक इनपुट आमतौर पर कीबोर्ड है, और मानक आउटपुट और त्रुटि आमतौर पर मॉनिटर स्क्रीन होती है हालांकि, आप ProcessStartInfo. RedirectStandardInput का उपयोग कर सकते हैं ProcessStartInfo. RedirectStandardOutput और ProcessStartInfo. RedirectStandardError गुणों को इनपुट से इनपुट प्राप्त करने या किसी फ़ाइल या अन्य डिवाइस में आउटपुट वापस लाने के लिए कारण। यदि आप Process. StandardInput का उपयोग करते हैं Process. StandardOutput। या Process. StandardError गुण प्रोसेस घटक पर, आपको पहले प्रोसेसस्टार्टइन्फ़ो संपत्ति पर संबंधित मूल्य सेट करना होगा। अन्यथा, जब आप स्ट्रीम में पढ़ते या लिखते हैं तो सिस्टम एक अपवाद फेंकता है। ऑपरेटिंग सिस्टम शेल का उपयोग कर प्रक्रिया शुरू करने के लिए निर्दिष्ट करने के लिए ProcessStartInfo. UseShellExecute सेट करें। आप किसी भी ProcessStartInfo संपत्ति का मूल्य उस समय तक बदल सकते हैं, जब प्रक्रिया शुरू होती है। आप प्रक्रिया शुरू करने के बाद, इन मानों को बदलने से कोई प्रभाव नहीं पड़ता है। System. Diagnostics. ProcessStartInfo सदस्य सूची: डिफ़ॉल्ट कन्स्ट्रक्टर इस प्रकार के राज्य को शुरू करने के लिए इस निर्माता को व्युत्पन्न क्लास कन्स्ट्रक्टर द्वारा कहा जाता है। प्रक्रिया शुरू करने के लिए फ़ाइल नाम निर्दिष्ट किए बिना ProcessStartInfo वर्ग के एक नए इंस्टेंस को प्रारंभ करता है। ओवरलोड किया गया:.ctor (string fileName) प्रक्रिया की एक नई आवृत्ति को शुरू करता है ProcessStartInfo वर्ग और एक फ़ाइल नाम निर्दिष्ट करता है जैसे कोई अनुप्रयोग या दस्तावेज़ जिसके साथ प्रक्रिया शुरू होती है। ओवरलोडेड:.कॉरक्टर (स्ट्रिंग फाइलनाम, स्ट्रिंग आर्गुमेंट्स) प्रोसेस्टस्टार्टइनफ़ो वर्ग के एक नए इंस्टेंस को शुरू करता है और एक आवेदन फ़ाइल नाम निर्दिष्ट करता है जिसके साथ प्रक्रिया शुरू करने के साथ-साथ आवेदन को पास करने के लिए कमांड लाइन तर्कों का एक सेट भी होता है। गेट या अनुप्रयोग शुरू करते समय उपयोग करने के लिए कमांड लाइन तर्कों का सेट सेट करता है। फ़ाइलों के लिए खोज पथ, अस्थायी फ़ाइलों के लिए निर्देशिका, एप्लिकेशन-विशिष्ट विकल्प, और अन्य समान जानकारी मिलती है। System. Diagnostics. ProcessStartInfo सदस्य विवरण ओवरलोडेड सीटीओआर 1 सारांश प्रोसेसस्टार्टइन्फो क्लास के एक नए इंस्टेंस की शुरुआत के बिना फ़ाइल नाम निर्दिष्ट किए बिना प्रक्रिया शुरू करने के लिए। डिफ़ॉल्ट कन्स्ट्रक्टर इस प्रकार के राज्य को शुरू करने के लिए इस निर्माता को व्युत्पन्न क्लास कन्स्ट्रक्टर द्वारा कहा जाता है। सी सिंटैक्स: रिमार्क्स आपको प्रक्रिया शुरू करने से पहले कम से कम प्रोसेस्टस्टाईटफ़ाईनफाइल नाम की संपत्ति निर्धारित करनी होगी। फ़ाइल नाम किसी भी आवेदन या दस्तावेज़ है। इस स्थिति में, किसी दस्तावेज़ को किसी भी फाइल प्रकार के रूप में परिभाषित किया जाता है जिसमें उसके साथ जुड़ी एक खुली या डिफ़ॉल्ट कार्यवाही होती है आप ऑपरेटिंग सिस्टम के माध्यम से उपलब्ध फ़ोल्डर विकल्प संवाद का उपयोग करके अपने कंप्यूटर के लिए पंजीकृत फ़ाइल प्रकार और उसके संबद्ध अनुप्रयोग देख सकते हैं। उन्नत बटन एक संवाद की ओर जाता है जो दिखाता है कि क्या एक विशिष्ट पंजीकृत फ़ाइल प्रकार से जुड़ी एक खुली क्रिया है। वैकल्पिक रूप से, आप प्रक्रिया शुरू करने से पहले अन्य गुणों को भी सेट कर सकते हैं। System. Diagnostics. ProcessStartInfo. Verb (साझा स्रोत CLI पर समर्थित नहीं) संपत्ति की आपूर्ति कार्यों को ले जाने के लिए, जैसे कि प्रिंट, साथ में निर्दिष्ट फ़ाइल ProcessStartInfo. FileName गुण। ProcessStartInfo. Arguments संपत्ति फ़ाइल को कमांड लाइन तर्कों को चलाने के लिए एक तरीका प्रदान करती है जब सिस्टम इसे खोलता है। ओवरलोडेड सीटीओआर 2 सारांश प्रोसेस्टस्टाईटइनफ़ो वर्ग के एक नए इंस्टेंस को शुरू करता है और एक फाइल नाम निर्दिष्ट करता है जैसे कि कोई अनुप्रयोग या दस्तावेज़ जिसके साथ प्रक्रिया शुरू होती है। सी सिंटैक्स: एक आवेदन या दस्तावेज जिसमें एक प्रक्रिया शुरू होनी है। रिमार्क्स फ़ाइल नाम किसी भी आवेदन या दस्तावेज़ है। इस स्थिति में, किसी दस्तावेज़ को किसी भी फाइल प्रकार के रूप में परिभाषित किया जाता है जिसमें उसके साथ जुड़ी एक खुली या डिफ़ॉल्ट कार्यवाही होती है आप ऑपरेटिंग सिस्टम के माध्यम से उपलब्ध फ़ोल्डर विकल्प संवाद का उपयोग करके अपने कंप्यूटर के लिए पंजीकृत फ़ाइल प्रकार और उसके संबद्ध अनुप्रयोग देख सकते हैं। उन्नत बटन एक संवाद की ओर जाता है जो दिखाता है कि क्या एक विशिष्ट पंजीकृत फ़ाइल प्रकार से जुड़ी एक खुली क्रिया है। आप इस निर्माता को कॉल करने के बाद प्रोसेसस्टार्टइनफ़ोफाइलनाम की संपत्ति बदल सकते हैं, उस समय तक कि प्रक्रिया शुरू होती है। आप प्रक्रिया शुरू करने के बाद, इन मानों को बदलने से कोई प्रभाव नहीं पड़ता है। ओवरलोडेड सीटीओआर 3 सारांश प्रोसेस्टस्टटाइन्फ़ो क्लास का एक नया इंस्टेंस आरंभ करता है और एक आवेदन फ़ाइल नाम निर्दिष्ट करता है जिसके साथ प्रक्रिया शुरू करने के साथ-साथ आवेदन को पास करने के लिए कमांड लाइन तर्कों का एक सेट भी होता है। सी सिंटैक्स: एक आवेदन जिसमें एक प्रक्रिया शुरू करने के लिए। प्रक्रिया शुरू होने पर एप्लिकेशन को पास करने के लिए कमांड लाइन तर्क। रिमार्क्स फ़ाइल नाम किसी भी आवेदन या दस्तावेज़ है। इस स्थिति में, किसी दस्तावेज़ को किसी भी फाइल प्रकार के रूप में परिभाषित किया जाता है जिसमें उसके साथ जुड़ी एक खुली या डिफ़ॉल्ट कार्यवाही होती है आप ऑपरेटिंग सिस्टम के माध्यम से उपलब्ध फ़ोल्डर विकल्प संवाद का उपयोग करके अपने कंप्यूटर के लिए पंजीकृत फ़ाइल प्रकार और उसके संबद्ध अनुप्रयोग देख सकते हैं। उन्नत बटन एक संवाद की ओर जाता है जो दिखाता है कि क्या एक विशिष्ट पंजीकृत फ़ाइल प्रकार से जुड़ी एक खुली क्रिया है। आप इस निर्माता को कॉल करने के बाद प्रोसेसस्टार्टइनफ़ोफाइलनाम या प्रोसेस्टस्टाईट इन्फ़ो.अग्रिगमेंट्स गुणों को बदल सकते हैं, जिस समय तक प्रक्रिया शुरू होती है। आप प्रक्रिया शुरू करने के बाद, इन मानों को बदलने से कोई प्रभाव नहीं पड़ता है। संपत्ति: तर्क (पढ़ें-लिखना) सारांश गेट या अनुप्रयोग शुरू करते समय उपयोग करने के लिए कमांड लाइन तर्कों के सेट को सेट करता है। सी सिंटैक्स: सम्पत्ति: पर्यावरणविभिन्नता (केवल-पढ़ने के लिए) सारांश फाइलों, अस्थायी फ़ाइलों के लिए निर्देशिका, अनुप्रयोग-विशिष्ट विकल्प, और अन्य समान जानकारी के लिए खोज पथ हो जाता है। सी सिंटैक्स: प्रॉपर्टी: रीडायरेक्ट स्टैण्डर्ड एरर (रीड-लिट) सारांश प्रोसेसेस इंस्टेंस प्रोसेस। स्टैंडर्ड ईर्रॉयर सदस्य को प्रक्रिया त्रुटि त्रुटि को इंगित करता है या नहीं मान सेट करता है, स्टेंडर्ड एरर स्ट्रीम के अलावा किसी अन्य गंतव्य पर लिखने के लिए आपको सक्षम करता है (आमतौर पर मॉनिटर स्क्रीन)। किसी फ़ाइल या लॉग में त्रुटि डेटा लिखने के लिए उपयोग किया जाता है, उदाहरण के लिए। सी सिंटेक्स: रिमार्क्स प्रक्रिया घटक एक पाइप के माध्यम से एक बाल प्रक्रिया के साथ संचार करता है। यदि कोई बच्ची प्रक्रिया बफ़र को भरने के लिए पर्याप्त डेटा पाइप में लिखती है, तो बच्चे को तब तक अवरुद्ध कर दिया जाएगा जब तक कि माता-पिता पाइप से डेटा नहीं पढ़ते। यह डेडलॉक का कारण हो सकता है यदि आपका एप्लिकेशन मानक त्रुटि और मानक आउटपुट में सभी आउटपुट पढ़ रहा है, उदाहरण के लिए, निम्न C कोड का उपयोग कर। इस उदाहरण में, माता-पिता और बच्चे दोनों प्रक्रियाओं को अवरुद्ध कर दिया जाएगा, क्योंकि भरी हुई पाइप बाल प्रक्रिया को पूरा करने से रोकती है, जबकि माता-पिता की प्रक्रिया बाल प्रक्रिया से बाहर निकलने के लिए अनिश्चित काल तक प्रतीक्षा कर रही है। WaitForExit () से पहले ReadToEnd () को स्थानांतरित करके इस समस्या का समाधान किया जा सकता है। निम्नलिखित नुसार। एक समान समस्या उत्पन्न होती है, यदि आप दोनों मानक आउटपुट और मानक त्रुटि रीडायरेक्ट करते हैं और फिर दोनों को पढ़ने का प्रयास करते हैं, उदाहरण के लिए निम्न सी कोड का उपयोग कर। इस स्थिति में, अगर बाल प्रक्रिया मानक त्रुटि को कोई पाठ लिखती है तो यह प्रक्रिया को अवरुद्ध कर देगा, क्योंकि मूल प्रक्रिया मानक त्रुटि से पढ़ नहीं सकती है जब तक कि मानक आउटपुट से पढ़ना समाप्त नहीं हो जाता। हालांकि, प्रक्रिया समाप्त होने तक मूल प्रक्रिया मानक सिस्टम से नहीं पढ़ी जाएगी। इस स्थिति के लिए एक अनुशंसित समाधान दो धागे बनाने के लिए है ताकि आपका एप्लिकेशन एक अलग थ्रेड पर प्रत्येक स्ट्रीम का आउटपुट पढ़ सके। प्रॉपर्टी: रीडायरेक्ट स्टैंडर्ड इन्पुट (रीड-लिट) सारांश प्रक्रिया संकेत प्रक्रिया से प्रक्रिया कमांड इनपुट को पढ़ा जाता है या नहीं, यह दर्शाता है कि मानक इनपुट स्ट्रीम (आमतौर पर कुंजीपटल) के अलावा अन्य किसी स्रोत से पढ़ने के लिए आपको सक्षम मान या सेट करता है। फ़ाइल से डेटा पढ़ने के लिए उपयोग किया जाता है, उदाहरण के लिए। सी सिंटैक्स: प्रॉपर्टी: रीडायरेक्ट मानक ओटपुट (रीड-लिट) सारांश प्रोसेस इंस्टेंस प्रोसेस। स्टेंडऑन आउटपुट सदस्य को प्रक्रिया आउटपुट लिखा जाता है या नहीं, यह दर्शाता है कि मानक आउटपुट स्ट्रीम (आमतौर पर मॉनिटर के अलावा किसी अन्य गंतव्य पर लिखने के लिए) स्क्रीन)। किसी फ़ाइल में डेटा लिखने के लिए उपयोग किया जाता है, उदाहरण के लिए। सी सिंटेक्स: रिमार्क्स प्रक्रिया घटक एक पाइप के माध्यम से एक बाल प्रक्रिया के साथ संचार करता है। यदि कोई बच्ची प्रक्रिया बफ़र को भरने के लिए पर्याप्त डेटा पाइप में लिखती है, तो बच्चे को तब तक अवरुद्ध कर दिया जाएगा जब तक कि माता-पिता पाइप से डेटा नहीं पढ़ते। यह डेडलॉक का कारण हो सकता है यदि आपका एप्लिकेशन मानक त्रुटि और मानक आउटपुट में सभी आउटपुट पढ़ रहा है, उदाहरण के लिए, निम्न C कोड का उपयोग कर। इस उदाहरण में, माता-पिता और बच्चे दोनों प्रक्रियाओं को अवरुद्ध कर दिया जाएगा, क्योंकि भरी हुई पाइप बाल प्रक्रिया को पूरा करने से रोकती है, जबकि माता-पिता की प्रक्रिया बाल प्रक्रिया से बाहर निकलने के लिए अनिश्चित काल तक प्रतीक्षा कर रही है। WaitForExit () से पहले ReadToEnd () को स्थानांतरित करके इस समस्या का समाधान किया जा सकता है। निम्नलिखित नुसार। एक समान समस्या उत्पन्न होती है, यदि आप दोनों मानक आउटपुट और मानक त्रुटि रीडायरेक्ट करते हैं और फिर दोनों को पढ़ने का प्रयास करते हैं, उदाहरण के लिए निम्न सी कोड का उपयोग कर। इस स्थिति में, अगर बाल प्रक्रिया मानक त्रुटि को कोई पाठ लिखती है तो यह प्रक्रिया को अवरुद्ध कर देगा, क्योंकि मूल प्रक्रिया मानक त्रुटि से पढ़ नहीं सकती है जब तक कि मानक आउटपुट से पढ़ना समाप्त नहीं हो जाता। हालांकि, प्रक्रिया समाप्त होने तक मूल प्रक्रिया मानक सिस्टम से नहीं पढ़ी जाएगी। इस स्थिति के लिए एक अनुशंसित समाधान दो धागे बनाने के लिए है ताकि आपका एप्लिकेशन एक अलग थ्रेड पर प्रत्येक स्ट्रीम का आउटपुट पढ़ सके। प्रॉपर्टी: UseShellExecute (पठन-लिखित) सारांश प्रक्रिया को प्रारंभ करने के लिए ऑपरेटिंग सिस्टम शेल का उपयोग करने के लिए इंगित करता है कि क्या कोई मान हो या निर्धारित करता है। सी सिंटैक्स: इस संपत्ति को झूठा बनाने के लिए टिप्पणी आपको इनपुट, आउटपुट, और त्रुटि स्ट्रीम को रीडायरेक्ट करने में सक्षम बनाता है। जब आप प्रक्रियाओं को प्रारंभ करने के लिए ऑपरेटिंग सिस्टम शेल का उपयोग करते हैं, तो आप किसी भी दस्तावेज़ को शुरू करने में सक्षम होते हैं (जो किसी निष्पादन योग्य से जुड़ी कोई भी पंजीकृत फ़ाइल प्रकार होती है जिसमें एक डिफ़ॉल्ट खुली कार्रवाई होती है) और फ़ाइल पर कार्य, जैसे मुद्रण, प्रक्रिया के साथ घटक। जब ProcessStartInfo. UseShellExecute गलत है आप प्रक्रिया घटक के साथ केवल निष्पादनयोग्य शुरू करने में सक्षम हैं। प्रॉपर्टी: वर्किंग डायरेक्टरी (पठन-लिट) सारांश आरंभ करने की प्रक्रिया के लिए प्रारंभिक निर्देशिका सेट हो जाती है या सेट करता है सी सिंटैक्स: रिमार्क्स यदि निर्देशिका पहले से ही सिस्टम पाथ वेरिएबल का हिस्सा है, तो इस प्रॉपर्टी में निर्देशिका स्थान को दोहराना आवश्यक नहीं है। एलीना: आपके उत्तर के लिए धन्यवाद। इस 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 को उत्तर दिया मैंने एक ऐसा वर्ग बनाने की कोशिश की जो आपकी समस्या को हल करेगी जो अकसरसोनस स्ट्रीम का उपयोग करते हुए मार्क बियरर्स, रोब, स्टीवज्यू उत्तर लेते हुए आपकी समस्या को हल करेंगे। ऐसा करने से मुझे एहसास हुआ कि एसिंक्रोनस प्रोसेस आउटपुट स्ट्रीम से संबंधित एक बग पढ़ा गया है। आप ऐसा नहीं कर सकते: आपको सिस्टम प्राप्त होगा। अज्ञातऑपरेशन अपवाद मानकऑटो को पुनः निर्देशित नहीं किया गया है या प्रक्रिया अभी तक शुरू नहीं हुई है। फिर आपको प्रक्रिया शुरू होने के बाद एसिंक्रोनस आउटपुट को पढ़ना होगा: ऐसा करने से, रेस की स्थिति बनाओ क्योंकि आउटपुट स्ट्रीम आपको एसिंक्रोनस में सेट करने से पहले डेटा प्राप्त कर सकता है: तब कुछ लोग कह सकते हैं कि आपको स्ट्रीम से पहले ही पढ़ना होगा इसे अतुल्यकालिक से सेट करें लेकिन यही समस्या तब होती है तुल्यकालिक पढ़ने के बीच एक दौड़ की स्थिति होगी और स्ट्रीम को अतुल्यकालिक मोड में सेट किया जाएगा। वास्तविक प्रक्रिया में एक प्रक्रिया के आउटपुट स्ट्रीम के सुरक्षित असिंक्रोनस पठन को प्राप्त करने का कोई तरीका नहीं है, प्रक्रिया और प्रक्रिया स्टार्टइन्फो तैयार की गई है। आप संभावित रूप से अतुल्यकालिक पठन का उपयोग कर रहे हैं जैसे आपके केस के लिए अन्य उपयोगकर्ताओं द्वारा सुझाई गई। लेकिन आपको पता होना चाहिए कि आप दौड़ की स्थिति के कारण कुछ जानकारी याद कर सकते हैं। एलीना: आपके उत्तर के लिए धन्यवाद। इस 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 को उत्तर दिया मैंने एक ऐसा वर्ग बनाने की कोशिश की जो आपकी समस्या को हल करेगी जो अकसरसोनस स्ट्रीम का उपयोग करते हुए मार्क बियरर्स, रोब, स्टीवज्यू उत्तर लेते हुए आपकी समस्या को हल करेंगे। ऐसा करने से मुझे एहसास हुआ कि एसिंक्रोनस प्रोसेस आउटपुट स्ट्रीम से संबंधित एक बग पढ़ा गया है। आप ऐसा नहीं कर सकते: आपको सिस्टम प्राप्त होगा। अज्ञातऑपरेशन अपवाद मानकऑटो को पुनः निर्देशित नहीं किया गया है या प्रक्रिया अभी तक शुरू नहीं हुई है। फिर आपको प्रक्रिया शुरू होने के बाद एसिंक्रोनस आउटपुट को पढ़ना होगा: ऐसा करने से, रेस की स्थिति बनाओ क्योंकि आउटपुट स्ट्रीम आपको एसिंक्रोनस में सेट करने से पहले डेटा प्राप्त कर सकता है: तब कुछ लोग कह सकते हैं कि आपको स्ट्रीम से पहले ही पढ़ना होगा इसे अतुल्यकालिक से सेट करें लेकिन यही समस्या तब होती है तुल्यकालिक पढ़ने के बीच एक दौड़ की स्थिति होगी और स्ट्रीम को अतुल्यकालिक मोड में सेट किया जाएगा। वास्तविक प्रक्रिया में एक प्रक्रिया के आउटपुट स्ट्रीम के सुरक्षित असिंक्रोनस पठन को प्राप्त करने का कोई तरीका नहीं है, प्रक्रिया और प्रक्रिया स्टार्टइन्फो तैयार की गई है। आप संभावित रूप से अतुल्यकालिक पठन का उपयोग कर रहे हैं जैसे आपके केस के लिए अन्य उपयोगकर्ताओं द्वारा सुझाई गई। लेकिन आपको पता होना चाहिए कि आप दौड़ की स्थिति के कारण कुछ जानकारी को याद कर सकते हैं। सिस्टम। डायग्नोस्टिक्स. प्रक्रिया: मानक इनपुट, मानक आउटपुट, मानक त्रुटि 82218217 इनपूटऔर आउटपुटटौएंड रीडायरेक्ट करें: एक पी पर रीडायरेक्ट इनपुट आउटपुटर का उपयोग करने का एक आसान तरीका 82218217 ltparam name8221p8221gt पी पुनर्निर्देशित करने के लिए UseShellExecute को false. ltparamgt 82218217 ltparam name8221StandardInput8221gt पर सेट होना चाहिए यह स्ट्रिंग पी के लिए इनपुट के रूप में भेजा जाएगा। (यदि नहीं, तो कुछ भी नहीं होना चाहिए, स्टार्टइन्फ़ो। रीडायरेक्ट स्टैंडर्ड इन्पुट) एलटीपीआरएमजीटी 82218217 एलटीपीआरएम नाम 8221 मानकऑप्ट्यूपूट 8221 जीटी पी 8217 एस आउटपुट इस बायरफ स्ट्रिंग में एकत्र किए जाएंगे। (यदि कुछ नहीं है तो StartInfo. RedirectStandardOutput) होना चाहिए, ltparamgt 82218217 ltparam name8221StandardError8221gtThe p8217s त्रुटि इस ByRef स्ट्रिंग में एकत्र की जाएगी। (स्टार्टइन्फ़ो। रीडायरेक्ट स्टैन्डर्ड एंटर) नहीं तो कुछ भी नहीं होना चाहिए। ltparamgt 82218217 ltremarksgt यह फ़ंक्शन msdn. microsoft. en-library. system. diagnostics. p.standardoutput. aspxltremarksgt ltRuntimepiler पर उल्लिखित डेडलॉक समस्या को हल करता है। एक्स्टेंशन () gt उप इनपुट एंडऑप्टपुट (एंड्रॉइड) ByVal डायग्नोस्टिक्स के रूप में.प्रक्रिया, बाय वैल मानक इनपुट के रूप में स्ट्रिंग। ByRef मानक आउटपुट स्ट्रिंग। ByRef मानक स्ट्रिंग के रूप में त्रुटि) यदि पी कुछ भी नहीं है तो नया तर्क फेंक अपवाद (8220p को गैर-नल 8221 होना चाहिए) 8216 मान लें कि p। काश नहीं है 8217s जांच करने के लिए कोई रास्ता नहीं यदि p. StartInfo. UseShellExecute फिर नया तर्क फेंकता है (8220Set StartInfo. UseShellExecute false8221 पर) यदि (p. StartInfo. RedirectStandardInput ltgt (StandardInput IsNot कुछ भी नहीं)) तो नया तर्क फेंकना अपवाद (8220 केवल जब StartInfo. RedirectStandardInput8221) एक गैर-नल इनपुट प्रदान करें (p. StartInfo. RedirectStandardOutput ltgt (StandardOutput IsNot Nothing)) तब नई दलील फेंकना अपवाद (8220 केवल जब StartInfo. RedirectStandardOutput8221) एक गैर-रिक्त आउटपुट प्रदान करें (p. StartInfo. RedirectStandardError ltgt (StandardError IsNot कुछ भी नहीं)) तब नया तर्क फेंकना अपवाद (8220 प्रदान करें एक गैर-नल त्रुटि केवल जब StartInfo. RedirectStandardError8221) नई आउटपुट के रूप में नई इनपुट और आउटपुटटोइंडडेटा मंद त्रुटि डेटा के रूप में डेटा इनपुट और आउटपुटटॉएन्डडेटा यदि p. StartInfo. RedirectStandardOutput तब

No comments:

Post a Comment