Ich habe mir aus dem Internet einen Codeschnipsel gezogen, mit dem angeblich die Rückgabe von Konsolenbefehlen während deren Ausführung umgeleitet werden kann.
Dies habe ich in einer kleinen Dummy- Applikation erst einmal eingebaut. Den Code habe ich so umgestrickt, dass die Ausgabe auf eine Textbox umgeleitet werden soll. Leider erhalte ich außer der Sanduhr nix und komme auch nicht wieder zurück, selbst wenn der Prozess bereits abgeschlossen ist.
Wo liegt der Fehler ?
Hier der angepasste Code:
Dies habe ich in einer kleinen Dummy- Applikation erst einmal eingebaut. Den Code habe ich so umgestrickt, dass die Ausgabe auf eine Textbox umgeleitet werden soll. Leider erhalte ich außer der Sanduhr nix und komme auch nicht wieder zurück, selbst wenn der Prozess bereits abgeschlossen ist.
Wo liegt der Fehler ?
Hier der angepasste Code:
Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace DummyProject { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Shown(object sender, EventArgs e) { //string output; Process p = new Process(); p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "c:\\temp\\7za.exe"; p.StartInfo.Arguments = " a -r -sfxc:\\temp\\7zS.sfx C:\\TEMP\\test.7z C:\\temp\\*.*"; p.StartInfo.CreateNoWindow = true; p.OutputDataReceived += new DataReceivedEventHandler(this.p_OutputDataReceived); txtLog.Text = p.StartInfo.FileName + p.StartInfo.Arguments; p.Start(); p.BeginOutputReadLine(); p.WaitForExit(); p.Close(); MessageBox.Show("Hier komme ich erst nach Abschluss des Prozesses hin"); } private void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { //Debug.WriteLine(e.Data); txtLog.Text += e.Data; } } }
Comment