首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HandbrakeCLI不会通过C#流程实现自动化

HandbrakeCLI不会通过C#流程实现自动化
EN

Stack Overflow用户
提问于 2015-07-31 00:39:40
回答 1查看 221关注 0票数 0

我正在尝试通过System.Diagnostics.Process类使用C#来自动化HandbrakeCLI。但是,只要我的程序试图运行该进程,该进程似乎就不会前进。

下面是我的进程设置:

代码语言:javascript
复制
Process process = new System.Diagnostics.Process();
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.FileName = parameters.HandbrakeLocation;
startInfo.Arguments = arguments;

process.StartInfo = startInfo;
process.Start();

string output = string.Empty;
while ((output = process.StandardOutput.ReadLine()) != null)
{
    Debug.WriteLine(output);
}
process.WaitForExit();

HandbrakeCLI.exe确实出现在我的进程列表中。Debug.WriteLine(output);行连续输出"Encoding: Task1 of 1,0.00%“,该过程永远不会完成。如果我杀死我的C#应用程序,那么HandbrakeCLI会立即从内存中的7,000k增加到145,000k,然后进行我想要它做的编码。这就像是我的C#应用程序拖累了它。

我尝试使用Read()而不是ReadLine(),并尝试在读取之前和之后刷新StandardOutput流,但均未成功。我怀疑,由于HandbrakeCLI在编写编码进度时会覆盖标准输出,因此在通过C#进行自动化时,它的行为将不同于正常的过程。

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 06:43:28

我想通了。我将stderr重定向到我的C#应用程序,但没有使用它。该进程一直挂起,直到stderr被使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31729473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档