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 に答える