如何为多个任务多次启动进程

时间:2016-06-20 09:18:46

标签: c#

第一次转换成功但是当我进行第二次转换或第二次调用转换函数时,它会抛出以下异常:

  

已在流上启动异步读取操作...

如何处理此问题并将此功能用于多次转换?它可以工作,如果我关闭程序并重新启动它,但不是我在一次运行中第二次调用它时。

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);
    }
}

1 个答案:

答案 0 :(得分:0)

听起来ffmpeg.exe在读取文件时会锁定文件,这就是为什么你不能在同一个文件上运行它的两个实例的原因。如果您要尝试并行化这个,那么您需要找到一个支持它的不同工具(不太可能),或者接受并行处理这个工作负载并且这是你能得到的最好的工具。