C# 进程自杀

C# 进程自杀,c#,.net,process,C#,.net,Process,我正在编写一个程序,使用HandbrakeCLI作为转换器批量转换视频文件。我已经设置好了大部分文件,现在正在将文件传递给手刹。我使用HandbrakeCLI的位置创建了一个新进程,并传递参数。我还使它在同一个shell中执行。它旋转起来,然后开始转换,达到三帧左右,然后自杀。我使用的是64位Windows8上的VisualStudio12。这是我的密码: static void EncodeVideos() { var continueConverting = true

我正在编写一个程序,使用HandbrakeCLI作为转换器批量转换视频文件。我已经设置好了大部分文件,现在正在将文件传递给手刹。我使用HandbrakeCLI的位置创建了一个新进程,并传递参数。我还使它在同一个shell中执行。它旋转起来,然后开始转换,达到三帧左右,然后自杀。我使用的是64位Windows8上的VisualStudio12。这是我的密码:

static void EncodeVideos()
    {
        var continueConverting = true;

        while (continueConverting)
        {
            var converted = 0;
            if (settings.Optimize == true)
            {
                videos = videos.OrderBy(x => x.InputSize).ToList();
            }

            foreach (var v in videos)
            {
                if (!v.AlreadyConverted())
                {
                    v.CreateOutputPath();
                    var input = String.Format("-i \"{0}\" ", v.InputPath);
                    var output = String.Format("-o \"{0}\" ", v.OutputPath);
                    var preset = String.Format("-Z {0}", settings.Preset);
                    var convertString = String.Format(" {0} {1} {2}", input, output, preset);
                    //Converting is not working correctly yet.
                    var p = new Process();
                    p.StartInfo = new ProcessStartInfo(settings.HandBrakeLocation, convertString)
                    {
                        UseShellExecute = false,
                    };
                    p.Start();
                    p.WaitForExit();
                    converted++;
                }
            }

            if (settings.Loop == true)
            {
                if (converted == 0)
                {
                    continueConverting = false;
                }
            }
            else
            {
                continueConverting = false;
            }
        }
    }
如果您希望代码有更多的上下文,我已经将其全部放在github上,您可以在上找到它

编辑:固定代码

if (settings.Loop == true)
            {
                if (converted == 0)
                {
                    continueConverting = false;
                }
                continueConverting = false;
            }
            else
            {
                continueConverting = false;
            }
我猜你真的不想继续转换

这看起来是不正确的开始

我猜你真的不想继续转换


这似乎是不正确的开始。

这看起来不是问题所在-请先查看循环,只有在迭代所有视频后成功转换while循环中的所有视频,才能达到这一点。该设置用于如果用户希望运行转换,则在最后查看目录中是否有新文件,如果设置为true,则将循环这些文件。否则文件只运行一次,程序就退出了。不过你是对的,我忘了让第二次在if之外继续转换设置为true。我必须去解决这个问题。它看起来不像是问题-先看循环,只有在迭代所有视频后成功转换while循环中的所有视频,才能达到这一点。该设置用于如果用户希望运行转换,则在最后查看目录中是否有新文件,如果设置为true,则将循环这些文件。否则文件只运行一次,程序就退出了。不过你是对的,我忘了让第二次在if之外继续转换设置为true。我得去修一下。