Laden...

Progressbar bei langlaufender Aktion mitlaufen lassen

Erstellt von Takti vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.207 Views
T
Takti Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren
Progressbar bei langlaufender Aktion mitlaufen lassen

[EDIT=herbivore]Abgeteilt von StandardOutput.ReadToEnd gibt nichts zurück !?[EDIT]

Hätte da aber noch eine ander frage ich möchte jetzt noch eine ProgressBar mitlaufen lassen (für "0% abgeschlossen" usw.) und denn Text in eine Textbox eintragen während das DOS Programm noch läuft.
Aber mit Threads bekomm ich immer denn Fehler das ich nicht auf die TextBox zugreifen kann da diese in einem anderen Thread läuft.

Wie kann ich das sonst noch machen ?

MfG Takti

B
293 Beiträge seit 2008
vor 15 Jahren

Erstell dir eienn Backgroundworker. Lege deinen Process in den DoWork Eventhandler des Backgroundworkers...

Dann ändere den Process noch wie folgt...
Mach aus dem hier:

proc.Start();
string temp = compiler.StandardOutput.ReadToEnd();
compiler.WaitForExit(); 

folgendes:

proc.Start();
while (!p.HasExited)
{
temp = compiler.StandardError.ReadLine();
}
compiler.WaitForExit(); 

Die Variable Temp deklariest du Global.
Nun brauchst du nurnoch einen Timer, den du gleichzeitg mit dem Backgroundworker startest und der dann für dich in seinem TickEventhandler den String temp ausliest und bei veränderung in deine Textbox schreibst...

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

T
Takti Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

Funktioniert soweit allerding bekomm ich eine Fehler meldung wenn ich denn Text an die TextBox übergebe.

"Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement textBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

239 Beiträge seit 2008
vor 15 Jahren

Hallo Takti,

siehe z.B. FAQ: Warum blockiert meine GUI?

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

B
293 Beiträge seit 2008
vor 15 Jahren

Funktioniert soweit allerding bekomm ich eine Fehler meldung wenn ich denn Text an die TextBox übergebe.

"Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement textBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

Die Textbox befüllst du von deinem Timer aus! Der kann das, wenn du den ihn (den Timer) beim ButtonClick startest, also nicht im Backgroundworker!

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

T
Takti Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

Okay danke für die Antworten werd mir das dann mal genauer ansehen.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Takti,

nur ein Thema pro Thread. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.2. Erst recht, wenn bei dir die Nachfrage in ein komplett anderes Unterforum gehört. Bitte beachte das in Zukunft.

herbivore