5

我在线程中使用 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 连接?

4

2 回答 2

3

这是答案(根据@bluefeet 的要求) wxHTTP 继承自 wxSocketBase 并且在 wxSocketBase 中我们有这个引用

当从多个线程使用 wxSocket 时,即使是隐式的(例如,通过在另一个线程中使用 wxFTP 或 wxHTTP),您必须在创建其他套接字之前通过调用 Initialize() 从主线程初始化套接字。

有关更多说明,请参见此处

于 2014-09-29T07:37:55.013 回答
1

称呼

wxSocketBase::Initialize();

在您的应用程序中,OnInit 函数和 wxurl/wxhttp 函数应该在线程中工作。

于 2015-02-21T14:08:07.110 回答