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

本文关键字:一次 实例 CMD | 更新日期: 2023-09-27 17:56:20

我正在制作一个 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");
    }
}
}

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

cmd.StandardOutput.ReadToEnd() 阻止执行。你为什么在这里需要它?- 阿列克谢·

这就是问题所在