myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Batch per ClickEvent starten und CMD in TextBox auslesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Batch per ClickEvent starten und CMD in TextBox auslesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kobas17
myCSharp.de-Mitglied

Dabei seit: 20.05.2017
Beiträge: 4


Kobas17 ist offline

Batch per ClickEvent starten und CMD in TextBox auslesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Liebes Forum

Ich habe folgendes Problem. Ich löse einen Prozess aus der eine Batch Datei startet, die Funktionalität des Batches ist gegeben.
Sobald ich das CMD Fenster schließe erscheint auch der Inhalt in meiner Textbox. Ich möchte gerne erreichen das der Inhalt direkt
in die Textbox geschrieben wird ohne das ich das CMD Fester schließen muss, da der Batch länger läuft und viele Logs ausgibt.

Zudem kann ich meine Form nicht mehr bedienen wenn der Batch ausgeführt wird :-(

C#-Code:
private void CopyStart1_Click(object sender, EventArgs e)
        {
            Process Send = new Process();
            Send.StartInfo = new ProcessStartInfo("C:\\Users\\scripts\\copy.bat");
            Send.StartInfo.CreateNoWindow = false;
            Send.StartInfo.UseShellExecute = false;
            Send.StartInfo.RedirectStandardError = true;
            Send.StartInfo.RedirectStandardOutput = true;
            Send.StartInfo.RedirectStandardOutput = true;

            //Ausführen
            Send.Start();
            Send.WaitForExit();
            StreamReader mySr = Send.StandardOutput;
            textBox1.Text = mySr.ReadToEnd();

            string stdOutput = Send.StandardOutput.ReadToEnd();
            string stdError = Send.StandardError.ReadToEnd();
        }
21.05.2017 14:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.014


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich kann nur vermuten, aber ReadToEnd hört sich an als würde es lesen bis nichts mehr zu lesen ist, sprich bis der Stream geschlossen wird, sprich bis dein Batch zu Ende ist. Erst dann gehts weiter.
Stattdessen willst du Zeichen einzeln aus dem Stream lesen, d.h. eine andere Methode suchen.
21.05.2017 15:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kobas17
myCSharp.de-Mitglied

Dabei seit: 20.05.2017
Beiträge: 4

Themenstarter Thema begonnen von Kobas17

Kobas17 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja das stimmt soll er auch, leider bekomme ich dann aber eine Art Deadlook , kann mein Programm nicht mehr bedienen :-(
21.05.2017 16:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Papst Papst ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.09.2014
Beiträge: 220
Entwicklungsumgebung: VS2017
Herkunft: Kassel


Papst ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zusätzlich kommst du während dein Prozess läuft gar nicht bis zum lesen, denn du wartest mit

C#-Code:
Send.WaitForExit();

erst darauf, dass der Prozess schließt, bevor du irgendwas ausliest.
21.05.2017 18:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.232
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Kobas17,

Zitat von Kobas17:
eine Art Deadlook , kann mein Programm nicht mehr bedienen :-(

siehe dazu:  [FAQ] Warum blockiert mein GUI?
21.05.2017 21:37 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Jahre.
Der letzte Beitrag ist älter als 2 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.11.2019 00:20