Problème avec beginoutputreadline
Bonjour à tous,
Je suis tout nouveau, autant dans la programmation que sur le forum, je ne suis pas programmeur mais monteur vidéo, donc soyez indulgent si je ne comprend pas tout ;)
Donc voici mon problème :
J'ai créé une interface au logiciel Handbrake (CLI) pour me permettre de récupérer mes DVD au format h264 (Rip dvd), jusque là tout va bien tout se lance et fonctionne parfaitement :ccool:
La lecture synchrone de StandardOutput freeze l'application, c'est pourquoi je passe par une lecture asynchrone, pour récupérer l'Output dans une textbox et donc afficher le pourcentage et le temps restant sur mon interface...:ccool:
LE VRAI PROBLEME est qu'au premier lancement du processus, le beginoutputreadline, fonctionne parfaitement et je récupère tout ce que je désire, mais au deuxième lancement le beginoutputreadline ne renvoi rien !!!, sans pour autant bloquer le processus qui fonctionne sans aucun problème ! 8O
Je n'ai rien trouvé sur la toile (j'ai pourtant cherché partout...) donc si quelqu'un connaît le problème ou me propose une solution, j'en serais ravi !!!
Merci de votre lecture ;)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Function ripdvd()
If Registry.LocalMachine.OpenSubKey("Hardware\Description\System\CentralProcessor\0").GetValue("Identifier").ToString.Contains("x86") Then
objrip.StartInfo.FileName = "HandBrake\HandBrake32.exe"
Else
objrip.StartInfo.FileName = "HandBrake\HandBrake64.exe"
End If
objrip.StartInfo.UseShellExecute = False
objrip.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
objrip.StartInfo.RedirectStandardOutput = True
objrip.StartInfo.CreateNoWindow = True
objrip.Start()
AddHandler objrip.OutputDataReceived, AddressOf Me.rip_OutputDataReceived
cancel.Enabled = True
objrip.BeginOutputReadLine()
objrip.WaitForExit()
objrip.Close()
objrip.CancelOutputRead()
RemoveHandler objrip.OutputDataReceived, AddressOf Me.rip_OutputDataReceived
cancel.Enabled = False
Return 0
End Function |
Code:
1 2 3 4
| Private Sub rip_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
Me.handbrake.Text = e.Data
...
... |