У меня есть форма с пропущенной TWebBrowser
.Когда открывается форма, происходит следующее:
procedure TRouteMapView.FormShow(Sender: TObject);
begin
RouteMapView.Caption := 'Transport XLR - ' + Main.GlobalSite;
WebBrowser1.Navigate('https://****/map_only/' + TID);
end;
Загружает динамическую карту для оптимизированного маршрута.Проблема в том, что если я закрою форму до полной загрузки карты, память не будет освобождена.Даже если я подожду, пока он полностью загрузится, не вся память будет освобождена.
Я безуспешно пытался выполнить следующие действия в Formclose
:
WebBrowser1.Stop;
WebBrowser1.Navigate('about::blank');
WebBrowser1.Free;
Странно, но я не могу воспроизвестипроблема в Windows 10, , но Я должен поддерживать Windows 2008r2.
Есть идеи, что мне здесь не хватает?
ОБНОВЛЕНИЕ 1
Я пытался создать форму RouteMapView при запуске приложения, а затем просто показать и скрыть ее при необходимости.К сожалению, «Утечка» все еще там, и это еще хуже.Я также пытался дождаться завершения работы WebBrowser, один раз с ReadyState и один раз с Busy, похоже, что-то делает.Но я полагаю, что этот чертов веб-сайт выполняет много сценариев в фоновом режиме, и хотя он говорит, что сделано, это не сделано.Я также думал о том, что, возможно, сам веб-сайт является виновником.Таким образом, я изменил его на www.microsoft.com (я имею в виду, если это утечка, то это не имеет значения :)), но это действительно утечка.
Так что я начал думать о написании небольшого приложения, которое ничего не делает, кромепоказать карту, а затем просто закрывается.И я вызываю его по мере необходимости и жду его.
А потом я понял, когда я полностью закрываю свое приложение ... Память освобождается, так как, когда я снова запускаю другую Программу, все работает нормально, дажеесли я достиг отметки 1,5 ГБ ранее.
Мои знания здесь ограничены, но возможно ли определить, какие экземпляры Internet Explorer были запущены моей Программой, и просто принудительно завершить их?