Как уничтожить динамически созданный компонент Tchromium (Delphi)?

Как уничтожить динамически созданный компонент Tchromium? Я использую в DLL компонент, необходимый для его создания и уничтожения несколько раз без освобождения DLL, проблема в том, что не освобождается память и не может очистить папку кеша. Если я использую CefShutDown, возникают проблемы со временем, чтобы заново создать браузер. Я использую последнюю версию DCEF3. Создать динамически следующим образом:

crm := TChromium.Create(Form1);
crm.SetParentComponent (Panel2);
crm.Align := alClient;

уничтожить пытались несколькими способами:

FreeAndNil(crm);
crm.free;
crm := nil;
CefShutDown;

CefShutDown разрешается вовремя для уничтожения, проблема возникает к тому времени, когда я снова пытаюсь воссоздать компонент без освобождения моей DLL.

Также решить еще одну проблему у меня с UserAgent не может изменить воссоздание браузера.

Я ценю любые предложения по решению моей проблемы.


person Junior Miguel Vieira    schedule 14.05.2015    source источник
comment
Относится к CEF1; Я не уверен, добавили ли они поддержку очистки кеша в CEF3.   -  person TLama    schedule 14.05.2015
comment
После создания браузера вы можете изменить UserAgent? Хотел бы я, чтобы каждая навигация меняла эту информацию. Если да, то это будет решением моей проблемы.   -  person Junior Miguel Vieira    schedule 14.05.2015
comment
Нет, это задается только при инициализации. Но вы можете обработать событие OnBeforeResourceLoad и изменить поле заголовка пользовательского агента для каждого запроса.   -  person TLama    schedule 14.05.2015
comment
Тлама друг, у тебя есть пример того, как я использую OnBeforeResourceLoad?   -  person Junior Miguel Vieira    schedule 18.05.2015


Ответы (1)


Это поведение так, как задумано. Ошибка 1237 в системе отслеживания проблем Chromium идентична вашей проблеме. Соответствующий отрывок:

CefInitialize/CefShutdown нельзя вызывать несколько раз в одном и том же процессе. Вы можете создавать/удалять несколько окон браузера без повторной инициализации CEF.

Вам придется воздержаться от звонка CefShutDown.

person David Heffernan    schedule 14.05.2015
comment
Я нахожу очень хорошим этот компонент, если возможно, полностью уничтожить его и воссоздать динамически, было бы здорово. - person Junior Miguel Vieira; 14.05.2015
comment
Не стесняйтесь уничтожить экземпляр компонента, но воздержитесь от вызова CefShutDown. - person David Heffernan; 14.05.2015