Загрузка страницы CefSharp Chromium никогда не завершается - PullRequest
1 голос
/ 09 апреля 2019

Мне нужен мой ChromiumWebBrowser, чтобы загрузить все страницы в массиве URL-адресов, выполнить javascript для каждой из них и затем загрузить их источники.Я написал следующий фрагмент кода:

            ChromiumWebBrowser[] chromium = new ChromiumWebBrowser[offersLinks.Count()];                     
            for(int i = 0; i < offersLinks.Count(); ++i)
            {
                Debug.WriteLine("Page " + (i + 1) + "/" + offersLinks.Count());
                chromium[i] = new ChromiumWebBrowser(offersLinks[i]);
                chromium[i].FrameLoadEnd += async (sender, args) =>
                {
                    //Wait for the MainFrame to finish loading
                    if (args.Frame.IsMain)
                    {
                        Debug.WriteLine("Loaded.");
                        if (chromium[i].CanExecuteJavascriptInMainFrame)
                        {
                            JavascriptResponse response = await chromium[i].EvaluateScriptAsync(javascript);

                            if (response.Result != null)
                            {
                                Debug.WriteLine(response.Message);
                            }
                        }

                        chromium[i].ViewSource();
                        string html = await chromium[i].GetSourceAsync();
                    }
                };
            }

Однако по какой-то причине код внутри обратного вызова FrameLoadEnd никогда не выполняется.Не могли бы вы объяснить это мне?

1 Ответ

0 голосов
/ 11 апреля 2019

В тех случаях, когда вам не требуется UI, лучше использовать CefSharp.OffScreen

Версии CefSharp WPF и WinForms не начнут загружаться, пока они не будут присоединены к UI.

...