hi @ all,
ich hab folgendes problem... ich möchte einen prozess ausführen, der ein video vom flv zum avi convertiert... (kein problem) nun möchte ich aber eine message ausgeben, wenn die convertierung fertig abgeschlossen ist... nur wie mach ich das ?(
momentan siehts folgender maßen aus:
...
Process ffmpeg = new Process();
ffmpeg.StartInfo.UseShellExecute = false;
ffmpeg.StartInfo.CreateNoWindow = true;
ffmpeg.StartInfo.FileName = ffmpegExe;
ffmpeg.StartInfo.Arguments = ffmpegInputFileParameter;
ffmpeg.Start();
MessageBox.Shoe("fertig");
...
so, wie ihr sehen könnt, prozess wird gestartet, nur die message wird sofort ausgegeben, obwohl der prozess noch nicht beendet ist... wie kann ich das realisieren?
RonnyW :evil:
Hallo RonnyW,
das hatten wir gerade erst: Backgroundworker Asnychron Problem bei Windows Forms . Sogar zweimal.
Siehe außerdem: Process.Exited
herbivore
hm... also dass man auf einen thread nicht warten muss, ist ehrlich geasgt in diesem fall eher falsch...
Verabschiede dich von dem Gedanken, dass du warten musst, bis ein Thread fertig ist. Das muss man eigentlich nie.
da ich schließlich erst das video anschauen kann, wenns fertig konvertiert ist...
ich hab jetzt vorerst
ffmpeg.WaitForExit();
benutzt, obwohl es nicht die beste form der anwendung ist, jedoch helfen mir die anderen beiden posts nicht wirklich weiter...
RonnyW :evil:
Du scheinst es nicht verstehen zu wollen.
Natürlich ist es falsch in der Routine zu warten.
Das heisst aber nicht, das Du gleich mit der Verarbeitung weiter machen sollst.
Vorgehensweise:
ich versteh das schon, mir zwängt sich jetzt nur eine weitere frage auf, wenn ich die UI-elemente sperre, wie kann ich dann einen fortschrittsbalken laufen und den text in einem label sich verändern lassen?
RonnyW :evil:
Hallo RonnyW,
das ist doch kein Widerspruch. Per Programm sind auch Controls änderbar, für die Enabled=false ist.
herbivore
jo das mein ich auch nicht, bei mir isses momentan so, durch das
ffmpeg.WaitForExit();
kann aber nix anklicken in meine prog, kein tab wechseln kein gar nix, daher geh ich davon aus, dass das komplette prog auf das ende des processes wartet und somit unantastbar is, versteht mich?
und ein fortschritsbalken dürfte sich auch nicht bewegen bzw den fortschritt anzeigen, wenn das ganze programm ja auf nix reagiert während des prozesses
RonnyW :evil:
Hallo RonnyW,
deshalb sollst du ja WaitForExit auch nicht benutzen, sondern das Process.Exited-Event. Damit du eben nicht warten musst und trotzdem mitbekommst, wann der Prozess beendet wurde.
Langsam scheint mir, dass FZelle recht hat. Du scheinst es nicht verstehen zu wollen. 🙂
Siehe auch [FAQ] Warum blockiert mein GUI?
herbivore
ok habs jetzt, danke, ich wollts wirklich verstehen, hab heute aber zum ersten mal damit zu tun und somit wars net ganz einfach
danke trotzdem 😁
RonnyW :evil: