2016-06-20 7 views
-1

Die erste Umwandlung ist erfolgreich, aber wenn ich die zweite Umwandlung tun oder die Konvertierungsfunktion ein zweites Mal aufrufen, wirft es die folgende Ausnahme:Wie zum Starten eines Prozesses mehrmals für mehrere Aufgaben

Ein Async Lesevorgang ist bereits im Stream gestartet ...

Wie geht man damit um und diese Funktion für mehrere Konvertierungen verwenden? Es funktioniert, wenn ich das Programm schließe und es erneut starte, aber nicht, wenn ich es ein zweites Mal in einem einzigen Durchlauf anrufe.

private void conversion(string cmd) 
{ 
    try 
    { 
     p = this.process1; 
     p.StartInfo.FileName = @"C:\ffmpegtool\bin\ffmpeg.exe"; 
     p.StartInfo.Arguments = cmd; 
     p.StartInfo.UseShellExecute = false; 
     p.StartInfo.RedirectStandardOutput = true; 
     p.StartInfo.RedirectStandardError = true; 
     p.StartInfo.CreateNoWindow = true; 
     p.Start(); 
     p.BeginOutputReadLine(); 
     p.BeginErrorReadLine(); 

     if (p.HasExited) 
     { 
      p.CancelErrorRead(); 
      p.CancelOutputRead(); 
      p.Close(); 
      MessageBox.Show("Closed"); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Exception : \n" + ex.Message); 
    } 
} 
+0

Es ist besser, wenn Sie genauer sein können. Wo in dem Code haben Sie die Ausnahme? – fruggiero

+0

Wie man Datei-für-Datei lädt ... Das Problem ist, ich konvertiere eine Datei angenommene 34.mp4 zu 35.mp3 es funktioniert gut, aber wenn ich versuche, eine andere 21.mp4 zu 22.mp3 zu konvertieren, heißt es "Async read Betrieb wird bereits begonnen auf dem Strom –

+0

es scheint, wie Sie die Stream richtig funktionieren schließen versuchen, mit einer 'using' Aussage –

Antwort

0

Es klingt wie ffmpeg.exe Dateien sperrt, wenn sie zu lesen, weshalb Sie nicht zwei Instanzen auf derselben Datei ausführen können. Wenn Sie dies parallelisieren möchten, müssen Sie entweder ein anderes Tool finden, das es unterstützt (unwahrscheinlich), oder akzeptieren, dass die Parallelisierung dieser Arbeitslast auf einer Datei-für-Datei-Basis erfolgt und das ist das Beste, was Sie erhalten .

+0

Wie man Datei-für-Datei lädt ... Das Problem ist, ich konvertiere eine Datei angenommene 34.mp4 zu 35.mp3 es funktioniert gut aber wenn ich versuche, ein anderes 21.mp4 zu 22.mp3 zu konvertieren, heißt es " Eine Async-Leseoperation wurde bereits im Stream gestartet ... " –

Verwandte Themen