Загрузка веб-страницы в фоновом режиме с помощью wxHtmlWindow - PullRequest
2 голосов
/ 26 августа 2011

Я использую wxWidgets для загрузки содержимого веб-сайта в элемент управления wxHtmlWindow. Это работает безупречно, за исключением одной вещи. Весь графический интерфейс, кажется, зависает во время загрузки данных, что весьма проблематично для моего приложения. В большинстве других методов класса wxWidgets события продолжают обрабатываться автоматически, даже если рассматриваемый вызов блокируется. Похоже, что это не так, и мне интересно, как я могу указать wxWidgets загрузить страницу в фоновом режиме? В настоящее время я использую метод LoadPage.

Полагаю, я мог бы использовать второй поток, но из-за ограничений, которые wxWidgets накладывает на изменение состояния любого окна через любой поток, кроме основного, я не решаюсь углубиться в это. Есть ли способ лучше? Например, необработанный http-класс не блокирует окно во время загрузки, поэтому я не понимаю, почему wxHtmlWindow, который, безусловно, должен использовать необработанный http-класс внутри, не имеет такого поведения.

1 Ответ

1 голос
/ 30 августа 2011

К сожалению, wxHtmlWindow использует синхронные сокеты для извлечения содержимого URL. Вызов hiearchy выглядит следующим образом: wxHtmlWindow -> wxHtmlParser -> wxFileSystem -> wxURI -> wxHTTP -> wxHTTP :: GetInputStream. Метод GetInputStream будет использовать открытие сокета в режиме блокировки.

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

...