द्वारा बाहरी शेल कमांड परिणाम लाइन प्राप्त करें मैं एक सी # विनफॉर्म एप्लिकेशन लिख रहा हूं जो "डीआईआर" और "पिंग" जैसे खोल कमांड निष्पादित करने के लिए दूसरी प्रक्रिया शुरू करता है। मैं दूसरी प्रक्रिया के आउटपुट को रीडायरेक्ट करता हूं ताकि मेरा ऐप कमांड परिणाम प्राप्त कर सके। यह मोटे तौर पर ठीक काम करता है।सी #: लाइन
एकमात्र समस्या यह है कि मेरा Winform ऐप पंक्ति के अनुसार लाइन के बजाय कमांड लाइन आउटपुट प्राप्त करता है। उदाहरण के लिए, इसे बाहरी "पिंग" कमांड को समाप्त करने के लिए इंतजार करना पड़ता है (जिसमें कई सेकंड या अधिक समय लगता है) और उसके बाद पूरे आउटपुट (कई लाइनें) एक बार में प्राप्त होता है।
मुझे क्या चाहिए यह ऐप वास्तविक समय में cmdline आउटपुट प्राप्त करता है, यानी ब्लॉक द्वारा नहीं। क्या यह करने योग्य है?
मैं उत्पादन को पढ़ने के लिए इस कोड का उपयोग कर रहा हूँ: जबकि (! (परिणाम = proc.StandardOutput.ReadLine()) = नल)
लेकिन यह जिस तरह से मैं उम्मीद काम नहीं करता। अग्रिम धन्यवाद।
संपादित करें:
System.Diagnostics.ProcessStartInfo procStartInfo = new
System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// The following commands are needed to redirect the standard output.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result;
try {
while ((result = proc.StandardOutput.ReadLine()) != null)
{
AppendRtfText(result+"\n", Brushes.Black);
}
} // here I expect it to update the text box line by line in real time
// but it does not.
[संभव डुप्लिकेट] का उपयोग (http://stackoverflow.com/questions/ को पूरा विवरण दिया देने के लिए प्रदान करता है:
इसके अलावा इस समाधान नहीं मिला 415620/रीडायरेक्ट-कंसोल-आउटपुट-टू-टेक्स्टबॉक्स-इन-अलग-प्रोग्राम-सी) –
आपके द्वारा किए गए कोड को दिखाकर सहायक होगा। –