Laden...

Konsolen-Output in Echtzeit in Text-Box ausgeben

Erstellt von CHS vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.083 Views
C
CHS Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren
Konsolen-Output in Echtzeit in Text-Box ausgeben

Guten Morgen zusammen,

ich bin zwar nicht neu in der Programmierung aber neu hier im Forum.
Entschuldigt, falls das hier schon existiert, aber ich weiß nicht genau, wie ich die Suchanfrage Formulieren kann.

Ich habe eine Klasse erstellt, die einen Process erstellt, der Robocopy aufruft.
Den Output leite ich weiter und möchte diesen in einer Text-Box auf meinem Formular ausgeben. Die Ausgabe klappt, aber erst, wenn der Prozess beendet ist.

Wie kann die Konsolen-Ausgabe zu Laufzeit des Prozesses ausgeben, so, wie es die Konsole selbst macht.

Hier ist der Code für meine Klasse:


public static string Backup(string _from, string _to, string _arguments)
        {
            var proc = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = Environment.GetFolderPath(Environment.SpecialFolder.Windows) + "\\System32\\Robocopy.exe",
                    Arguments = " " + _from + " " + _to + " " + _arguments,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true
                }
            };

            proc.Start();
            StringBuilder Output = new StringBuilder("");

            while (!proc.StandardOutput.EndOfStream)
            {
                Output.Append(proc.StandardOutput.ReadLine());
                Output.AppendLine();
            }
            return Output.ToString();
        }

In meinem Button-Click-Ereignis wird dann einfach:


t_ausgabe.text = tFunction.Backup("C:\\Test", "D:\\Test", " /E")

aufgerufen

Es wäre super, wenn jemand einen Tipp für mich hätte.

Gruß, CHS.

J
251 Beiträge seit 2012
vor 9 Jahren

Hey,

Hört sich nach [FAQ] Warum blockiert mein GUI? an

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo CHS,

schau dir mal Console als Steuerelement einbinden an.

herbivore

C
CHS Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren

Hallo,

das Konsolenfenster zu kapern und in die eigene Anwendung zu integrieren ist gar keine schlechte Lösung, aber die Ausgabe lässt sich in einer TextBox etwas besser formatieren.

Also wenn ich das so verstehe, dann hätte ich das schwarze Konsolenfenster in meiner Applikation.

Eine weiße TextBox wäre natürlich schöner.

Gruß, CHS

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo CHS,

kannst du auch machen, wenn du willst. Den Grund, warum es bei dir hängt, hat Jamikus schon genannt. Die Umsetzung ist jedoch deine Aufgabe, (zu der in diesem spezillen Fall wegen [Hinweis] Wie poste ich richtig? Punkt 1.1 und dem entsprechenden Hinweis in der FAQ keine Nachfragen erlaubt sind. Denn in der FAQ sind alle Informationen, die du brauchst.

herbivore

C
CHS Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren

OK, ich denke das deckt sich mit meiner Vermutung, dass ich den Kopiervorgang in einen separaten Thread auslagern muss.

Besten Dank.

CHS

S
322 Beiträge seit 2007
vor 9 Jahren

Hallo,

Launching a process and displaying its standard output

dass müsste dir helfen 😉

Gruß
Steffen