【发布时间】:2011-07-28 22:35:20
【问题描述】:
我在 wxListCtrl 中获取数据库表值,(数据可能很大,所以我使用 wxThread)子线程将行发送到主线程,主线程将其填充到 wxListCtrl, 一切都很顺利,但是当我试图关闭框架时,它给了我意想不到的结果。在关闭按钮处,我正在调用一个新框架,有时它会打开,有时不会,我的代码是:-
if(thread_object_holder->IsAlive())
{
wxPuts(wxT("live"));
thread_object_holder->Pause();
wxMessageDialog *msg = new wxMessageDialog(this,wxT("You want to quit"), wxT("Quit Login Report") ,wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION);
if ( msg->ShowModal() == wxID_YES )
{
thread_object_holder->Delete();
temp_back_frame *obj= new temp_back_frame();
this->Destroy();
obj->Show(true);
}
else
{
thread_object_holder->Resume();
}
}
else
{
wxPuts(wxT("dead"));
wxMessageDialog *msg = new wxMessageDialog(this,wxT("You want to quit"), wxT("Quit Login Report") ,wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION);
if ( msg->ShowModal() == wxID_YES )
{
thread_object_holder->Delete();
temp_back_frame *obj= new temp_back_frame();
this->Destroy();
obj->Show(true);
}
}
表中只有 7 行,在填充记录期间,如果我按下按钮,那里一切都很好,但是一旦将 7 行放入 ListCtrl { 我认为现在线程将被销毁 } ,我没有数据可以放入 listctrl,我们按下关闭按钮,然后有时新框架打开,一些时间框架挂起,我认为线程对此负责,但在这里我采取了适当的预防措施来处理线程,请告诉我,我错了。
【问题讨论】:
-
有时我收到如下错误:- ass8-1-login_report: pthread_mutex_lock.c:312: __pthread_mutex_lock_full: Assertion `(-(e)) != 3 || !robust'失败了。