Dieser Code führt "handbrakecli" (eine Befehlszeilenanwendung) aus und legt die Ausgabe in einer Zeichenkette ab:
Dim p As Process = New Process
p.StartInfo.FileName = "handbrakecli"
p.StartInfo.Arguments = "-i [source] -o [destination]"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.Start
Dim output As String = p.StandardOutput.ReadToEnd
p.WaitForExit
Das Problem ist, dass dies bis zu 20 Minuten dauern kann, während derer nichts an den Benutzer zurückgemeldet wird. Sobald der Vorgang abgeschlossen ist, sieht er alle Ausgaben der Anwendung, einschließlich der Fortschrittsdetails. Das ist nicht sehr nützlich.
Deshalb versuche ich, ein Beispiel zu finden, das zeigt, wie man es am besten macht:
- Starten einer externen Anwendung (versteckt)
- Überwachen Sie die Ausgabe in regelmäßigen Abständen, da sie Informationen über den Fortschritt anzeigt (damit ich diese extrahieren und dem Benutzer einen schönen Prozentbalken präsentieren kann)
- Feststellen, wann die externe Anwendung beendet ist (damit ich mit der Ausführung meiner eigenen Anwendung nicht fortfahren kann)
- Beenden Sie die externe Anwendung, wenn nötig, und erkennen Sie, wann dies geschehen ist (so dass ich, wenn der Benutzer "Abbrechen" drückt, die entsprechenden Schritte einleiten kann).
Hat jemand irgendwelche empfohlenen Code-Schnipsel?