2011-08-25 42 views
2

我正在使用wxWidgets将网站的内容下载到wxHtmlWindow控件中。这件作品完美无瑕,除了一件事。在下载数据时,整个gui似乎都冻结了,这对我的应用程序来说是非常有问题的。在大多数其他的wxWidgets类方法中,即使有问题的调用被阻塞,事件也会继续自动处理。这似乎并不是这种情况,我想知道如何告诉wxWidgets在后台下载页面?我目前正在使用LoadPage方法。使用wxHtmlWindow在后台下载网页

我想我可以使用第二个线程,但是wxWidgets通过除主要线程之外的任何线程来更改任何窗口的状态会施加限制,这让我犹豫不决。有没有更好的办法?举例来说,未加工的http类在下载时不会阻塞窗口,所以我不明白为什么wxHtmlWindow必须在内部使用原始的http类没有相同的行为。

回答

1

不幸的是wxHtmlWindow使用同步套接字来获取URL的内容。调用hiearchy是这样的:wxHtmlWindow - > wxHtmlParser - > wxFileSystem - > wxURI - > wxHTTP - > wxHTTP :: GetInputStream。 GetInputStream方法将使用在阻塞模式下打开的套接字。

您将需要使用单独的线程来获取网站的内容。

+0

这是非常不幸的,但我自己的调查似乎导致了与您概述完全相同的结论。感谢您花时间清理这些! –