问题描述
我需要从网络核心控制台应用程序调用无头Chrome。但是,使用此代码,应用程序就会运行并且卡住了,什么也不做,没有打印任何内容,也没有创建pdf。终端中的相同参数按预期工作。
public static bool TakeScreenshot2()
{
try
{
var procStartInfo = new processstartinfo()
{
FileName = "google-chrome",Arguments = "--headless --disable-gpu --print-to-pdf=final.pdf http://www.google.com/",RedirectStandardOutput = true,RedirectStandardError = true,UseShellExecute = false,CreateNowindow = true
};
var proc = new Process { StartInfo = procStartInfo };
proc.Start();
var output = proc.StandardOutput.ReadToEnd();
Console.WriteLine(output);
string error = proc.StandardError.ReadToEnd();
Console.WriteLine(error);
return proc.ExitCode == decimal.Zero ? true : false;
}
finally
{
// do something
}
}
解决方法
您应该等待该过程完成
var proc = new Process { StartInfo = procStartInfo };
proc.Start();
proc.WaitForExit();
proc.ExitCode
退出后,您也可以检查它是否成功
如果您不想阻塞线程单元完成操作,则可以使用它,您的功能需要异步
await Task.Run(() => proc.WaitForExit());
或使用Process事件Exited