wxwidgets的mainloop()和boost :: thread

时间:2012-11-11 21:50:23

标签: boost wxwidgets boost-thread

简而言之,我正在尝试为我的网络应用程序实现GUI。它们都有mainloop()所以我试图将它们放入单独的线程中,我正在使用boost :: thread。

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

然而,上述崩溃因某种原因未知。我正在寻找任何方式来做同样的事情,所以任何建议都将不胜感激。

提前致谢,Red。

编辑:

我正在创建wxWidgets mainloop的boost :: thread GuiThread,如下所示:

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

和Networkthread一样。

然后我像这样重写wxApp OnRun()函数:

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

当我运行它时(在vs2010中),它说:myApp.exe已触发断点,如果我按下继续它会停止显示窗口,如果我按下它会显示我的程序集。

1 个答案:

答案 0 :(得分:1)

您必须从初始化库的同一线程运行wxWidgets主循环。如果您想在main之外的线程中运行它,则意味着您无法使用标准IMPLEMENT_APP()宏,但必须自己进行初始化,例如通过手动调用wxEntry()