0

つまり、ネットワークアプリにGUIを実装しようとしています。両方ともmainloop()を持っているので、それらを別々のスレッドに入れようとしており、そのためにboost::threadを使用しています。

    //standard initialization of boost::thread
    GuiThread.join();
    NetworkThread.join();

ただし、上記のクラッシュは何らかの理由で不明です。私は同じことをする方法を探しているので、どんな提案も歓迎されます。

よろしくお願いします、レッド。

編集:

私は次のようにwxWidgetsメインループのboost::threadGuiThreadを作成しています:

    boost::thread GuiThread = boost::thread ( boost::bind( &myAppClass::MainLoop(), this));

とNetworkthreadも同じように。

次に、wxApp OnRun()関数を次のように書き直します。

    int OnRun() {
            GuiThread.join();
            NetworkThread.join();
            return 0;
    }

(vs2010で)実行すると、myApp.exeがブレークポイントをトリガーし、続行を押すとウィンドウの表示が停止し、ブレークを押すとアセンブリが表示されます。

4

1 に答える 1

1

ライブラリを初期化したのと同じスレッドから wxWidgets メイン ループを実行する必要があります。メイン以外のスレッドで実行したい場合は、標準マクロを使用できず、手動でIMPLEMENT_APP()呼び出すなどして自分で初期化を行う必要があることを意味します。wxEntry()

于 2012-11-12T11:24:18.550 に答える