我想在wxListCtrl中填充数据库表,我可以这样做,我使用wxThread。我的问题是 - 我的概念是为少量数据工作,当我增加大小时,它显示错误,如 -
showingdatainwxlistctrl: ../../src/XlibInt.c:595: _XPrivSyncFunction: Assertion `dpy->synchandler == _XPrivSyncFunction' failed.
我的代码如下: -
void *MyThread :: Entry()
{
int i=1,j,k=0 ;
while(i!=400)
{
long index=this->temp->data_list_control->InsertItem(i,wxT("amit"));
for(j=1;j<3;j++)
{
this->temp->data_list_control->SetItem(index,j,wxT("pathak"));
}
k++;
if(k==30)
{
this->Sleep(1000);
k=0;
}
i++;
}
}
如果我使用i = 4,10 100,它正在工作但我越过极限(我不知道在哪一点)它开始显示错误 如果您有任何建议,请帮助我...
答案 0 :(得分:0)
您正在从另一个线程访问非线程安全的wxListCtrl,这根本不起作用。
更好的解决方案可能是跳过线程,使用wxTimer,然后每次调用OnTimer时再填充400个条目。
答案 1 :(得分:0)
您需要将事件发布到主线程并在事件处理程序中添加项,而不是直接从工作线程调用SetItem。列表控件事件的数据应放在自定义事件类中。请参阅wxPostEvent函数和此处的详细信息:http://wiki.wxwidgets.org/Custom_Events