首页 > 解决方案 > 来自 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
            }
        }

标签: c#.net-coregoogle-chrome-headlessheadless-browser

解决方案


您应该等待该过程完成

var proc = new Process { StartInfo = procStartInfo };
proc.Start();
proc.WaitForExit();

您可以proc.ExitCode在退出后检查它是否成功

如果你不想阻塞它完成的线程单元,你可以运行它,你的函数需要是异步的

await Task.Run(() => proc.WaitForExit());

或使用 Process 事件Exited


推荐阅读