Member 11882351 Ответов: 2

Chromiumwebbrowser использует высокую компьютерную память.


когда я перехожу с одной страницы на другую, это время показывает высокую загрузку памяти моего компьютера.
использование данных ChromiumWebBrowser с CefSharp и перенос 1 url страницы на другую url страницу более чем в 20 раз это время показывает высокое использование памяти моего компьютера

Изображение

MemoryUsage.png - Google Диск[^]

Что я уже пробовал:

время загрузки страницы
public void WebURLBind()
       {
           BtnGo.Enabled = false;
           try
           {
               WebsitePath = ConfigurationManager.AppSettings["WebsiteURL"];
               datecurrent = dateTimePicker1.Value;
               datetotalsecond = ConvertToTimestamp(datecurrent);

               settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
               settings.CefCommandLineArgs.Add("disable-application-cache", "1");
               settings.CefCommandLineArgs.Add("disable-session-storage", "1");

               Cef.Initialize(settings);
               Cef.GetGlobalCookieManager().DeleteCookies("", "");

               browser = new ChromiumWebBrowser(WebsitePath);
               this.panel1.Controls.Add(browser);
               browser.LoadingStateChanged += browser_FrameLoadEnd;
               browser.Dock = DockStyle.Fill;
               browser.LoadingStateChanged += ChromiumBrowser_IsLoadingChangedAsync;
           }
           catch (Exception ex)
           {
               BtnGo.Enabled = true;
           }
       }


private void browser_FrameLoadEnd(object sender, LoadingStateChangedEventArgs e)
      {
          Thread.Sleep(1000);
          browser.ExecuteScriptAsync("PopulateWeeklyEvents(" + datetotalsecond + ",'',true)");
          Thread.Sleep(1000);
          browser.ExecuteScriptAsync("$('#earnings_rel_data_all_table_info').parent('div').find('div.dataTables_length').find('label').find('select').val(-1);");
          browser.ExecuteScriptAsync("$('#earnings_rel_data_all_table_info').parent('div').find('div.dataTables_length').find('label').find('select').trigger('change');");
      }

public async void ChromiumBrowser_IsLoadingChangedAsync(object sender, CefSharp.LoadingStateChangedEventArgs e)
       {
           if (!e.IsLoading)
           {
               if (IsAactiveForm)
               {
                   await StartMethodAsync();
               }
           }
       }

<pre> public async Task StartMethodAsync()
        {
            result = await this.browser.GetSourceAsync();
            result = result.Trim();           
            doc.LoadHtml(result);
            Boolean isBreaked = false;
            foreach (var nodesection in doc.DocumentNode.SelectNodes("//section[@id='events_list']"))
            {
                foreach (var SecNodes in nodesection.ChildNodes)
                {
                    if (SecNodes.Name == "ul")
                    {
                        foreach (var cnode in SecNodes.ChildNodes)
                        {
                            test++;
                            if (cnode.Name == "li" && cnode.HasClass("ui-tabs-active"))
                            {
                                csvFileName = cnode.InnerText;
                                Thread.Sleep(1000 * 3);
                                getTabData(csvFileName);                                
                                isBreaked = true;
                                break;
                            }
                        }
                    }
                    if (isBreaked)
                        break;
                }
                if (isBreaked)
                    break;
            }
            if (IsAactiveForm)
            {
                await CallMethod();
            }
        }

2 Ответов

Рейтинг:
2

Member 11882351

я браузер в методе Мэнни, так что, возможно, не могу использовать код в любом одном методе.


Рейтинг:
1

Gerry Schmitz

Вы предполагаете, что даже можно "настроить" браузеры; и этот в частности.

Поскольку этот браузер является IDisposable, и я не вижу никакого кода "using", это, вероятно, указывает на то, что у вас есть утечка памяти (не утилизируя ресурсы должным образом).