Console App aus Windows Forms heraus starten und Progress bar in extra Formular anzeigen
-
Hallo,
ich habe hier eine einfache Windows Forms Anwendung. Aus dieser Anwendung heraus starte ich eine Konsolenapplikation.
Nun würde ich gerne, während diese Konsolenapplikation läuft, ein weiteres Formular öffnen, in dem ich dann eine Progress bar anzeige, die einfach immer wieder "durchläuft", solange die Konsolenapplikation aktiv ist.
Hat da irgend jemand ein Rezept dafür wie ich so was machen kann? Habe schon ein bisschen rum gespielt mit einem extra thread für das Progress bar Formular, aber das wollte mir nicht so recht gelingen (z.B. war das Fenster mit der Progress bar war nicht zu sehen (lag vermutlich an WaitForExit()))
Bin dankbar für Hilfe...
So starte ich die Console Application:
Process myProcess = new Process(); myProcess.StartInfo.FileName = "myConsoleApp.exe"; myProcess.StartInfo.Arguments = " arg1.xml arg2.xml"; myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; myProcess.Start(); myProcess.WaitForExit();
-
Pack das Starten der Consolenapp in einen extra Thread und handle Dein Progressbar im GUI Thread.
Alternativ kannst Du das WaitForExit auch weglassen. Afaik kann Process auch ein Event werfen wenn die externe Applikation fertig ist.
-
Lager doch das starten der Konsolenanwendung in einen extra Thread aus z.B. mit einen BackgroundWorker (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx). Dadurch wird dann dein UI-Thread nicht blockiert und du kannst die ProgressBar anzeigen.
Eine "durchlaufende" ProgressBar bekommst du mit:
progressBar.Style = ProgressBarStyle.Marquee;
-
einfach:
- backgroundworker thread starten mit dem prozess
- dialog anzeigen (ShowDialog)
- sobald der workerthread mit dem prozess endet dialog beenden
-
Vielen dank für die raschen Antworten! Hab es hin gekriegt und es läuft bis jetzt einfach suuper!