我在Thread中使用wxHTTP时遇到一些问题。我创建了下面的类,它派生自wxThread以使用wxHTTP。
class Thread : public wxThread {
private:
wxHTTP get;
public:
Thread()
{
}
~Thread()
{
}
virtual ExitCode Entry()
{
get.SetHeader(wxT("Content-Type"), wxT("text/html; charset=utf-8"));
get.Connect(wxT("www.mysite.com"));
get.SetTimeout(1);
wxInputStream *httpStream = get.GetInputStream(wxT("/script.php?name=aaa&text=blabla"));
wxDELETE(httpStream);
get.Close();
return 0;
}
};
我创建这个线程并运行它(线程被创建,运行,一切都很好)。不幸的是,wxHTTP似乎无法正常使用线程(即使我的防火墙也没有问我连接)。有没有办法在线程内创建wxHTTP连接?
答案 0 :(得分:2)
这是答案(根据@bluefeet的要求) wxHTTP继承自wxSocketBase,而在wxSocketBase中我们有这个引用
当从多个线程使用wxSocket时,即使是隐式的(例如在另一个线程中使用wxFTP或wxHTTP),你必须在创建其他线程之前通过调用Initialize()从主线程初始化套接字。
有关详细说明,请参阅here
答案 1 :(得分:1)
致电
wxSocketBase ::初始化();
在您的应用OnInit功能中 和wxurl / wxhttp函数应该从线程工作。