试图在C#中一次打开多个CMD实例

时间:2016-07-11 05:07:54

标签: c#

我正在制作一个C#程序,它在命令提示符下一次通过ffmpeg运行多个视频文件,但即使我在代码中找不到问题,也只会打开一个实例。

private void Render()
    {
        length = listBox1.Items.Count;
        for (int x = 0; x < length; x++) {
            ThreadStuff tws = new ThreadStuff(listBox1.Items[x].ToString(),x);
            Thread t = new Thread(new ThreadStart(tws.ThreadProc));
            t.Start();
        }
public class ThreadStuff
{
    public ThreadStuff(string filename, int x)
    {
        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.RedirectStandardInput = true;
        cmd.StartInfo.RedirectStandardOutput = true;
        cmd.StartInfo.CreateNoWindow = false;
        cmd.StartInfo.UseShellExecute = false;
        cmd.Start();
        cmd.StandardInput.WriteLine("ffmpeg -i \"" + filename + "\" tmp" + x.ToString() + ".mp4");
        cmd.StandardInput.Flush();
        cmd.StandardInput.Close();
        cmd.WaitForExit();
        Console.WriteLine(cmd.StandardOutput.ReadToEnd());
        using (System.IO.StreamWriter file =
            new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "list.txt", true))
        {
            file.WriteLine("file tmp" + x.ToString() + ".mp4");
        }
    }

    public void ThreadProc()
    {
        Console.WriteLine("Done");
    }
}
}

1 个答案:

答案 0 :(得分:0)

cmd.StandardOutput.ReadToEnd()阻止执行。你为什么需要它? - Aleksey L。

这是问题