第一次转换成功但是当我进行第二次转换或第二次调用转换函数时,它会抛出以下异常:
已在流上启动异步读取操作...
如何处理此问题并将此功能用于多次转换?它可以工作,如果我关闭程序并重新启动它,但不是我在一次运行中第二次调用它时。
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 :(得分:0)
听起来ffmpeg.exe在读取文件时会锁定文件,这就是为什么你不能在同一个文件上运行它的两个实例的原因。如果您要尝试并行化这个,那么您需要找到一个支持它的不同工具(不太可能),或者接受并行处理这个工作负载并且这是你能得到的最好的工具。