简而言之,我正在尝试为我的网络应用程序实现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已触发断点,如果我按下继续它会停止显示窗口,如果我按下它会显示我的程序集。
答案 0 :(得分:1)
您必须从初始化库的同一线程运行wxWidgets主循环。如果您想在main之外的线程中运行它,则意味着您无法使用标准IMPLEMENT_APP()
宏,但必须自己进行初始化,例如通过手动调用wxEntry()
。