c# - 来自 Process Start 的 C# headless chrome 不起作用
问题描述
我需要从网络核心控制台应用程序调用无头 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
推荐阅读
- javascript - 如何使角度单元测试用例的 AuthConfig 键动态化
- html - 在 CSS 中设计网格视图是否存在问题
- angular - 刷新页面时在 Safari 中显示不同颜色的 SVG 图像
- database - 如何克服两个用户同时在表中保存数据
- .net-core - 由于依赖于 .NET Framework 4.5.2,无法参考 CefSharp.WPF 为 .Net Core 3.1 WPF 应用生成 MSIX 包
- django - AttributeError:模块“rest_framework.serializers”没有属性“serialize”
- python - 阐明字符串如何在 python 中的函数中作为参数工作
- javascript - req.isAuthenticated() 永远不会评估为 true
- powerbi - DAX 未来 30 天的滚动平均预测
- magento2 - 从 Magento 2.2.4 迁移到 Magento 2.4.0 后产品未显示在类别页面上