मुझे कई कमांड लाइन स्क्रिप्ट निष्पादित करने की आवश्यकता है। वे वर्तमान में List
में संग्रहीत हैं। मैं उन्हें एक ही समय में चलाने के लिए चाहता हूं और उन सभी के बाद अगले चरण केवल के साथ आगे बढ़ना चाहता हूं।एकाधिक कमांड लाइन प्रक्रिया पूरी होने तक प्रतीक्षा करें?
मैंने नीचे दिए गए दृष्टिकोण की कोशिश की है, लेकिन मुझे इसकी कमी है क्योंकि आखिरी कमांड अंत अंतिम नहीं है। असल में, मैंने पाया कि अंतिम आदेश पूरा करने के लिए पहले भी हो सकता है। तो, मेरा मानना है कि मुझे WaitForExit()
जैसे कुछ चाहिए, लेकिन तक निष्पादित प्रक्रिया पूरी होने तक वापस नहीं आती है।
for (int i = 0; i < commands.Count; i++)
{
string strCmdText = commands[i];
var process = System.Diagnostics.Process.Start("CMD.exe", strCmdText);
if (i == (commands.Count - 1))
{
process.WaitForExit();
}
}
//next course of action once all the above is done
मैं इस समाधान किसी भी पेशकश की कार्य समानांतर दृष्टिकोण की तुलना में बेहतर लगता है, क्योंकि यह अनावश्यक रूप से उपयोग नहीं करता है/आगे धागे बनाने – Edin
यह आवश्यक कॉल कर सकता process.Close()? http://msdn.microsoft.com/en-us/library/fb4aw7b8%28v=vs.110%29.aspx –
शायद कड़ाई से जरूरी नहीं है, क्योंकि 'प्रोसेस' को 'घटक' से फाइनलाइज़र प्राप्त होता है, लेकिन यह अच्छा अभ्यास है जल्दी निपटान करें। इस उदाहरण में करना भी आसान है (प्रत्येक लूप पुनरावृत्ति में 'WaitForExit() 'के बाद बस' बंद करें() 'को कॉल करें)। –