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

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...

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 !

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub rip_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
        Me.handbrake.Text = e.Data
...
...