2011-02-17 27 views
0

我想在wxListCtrl中填充數據庫表,我可以做到這一點,我使用wxThread爲此。我的問題是 - 我的概念正在爲數據量小,當我增加大小,它顯示了喜歡 -在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

而不是從工作線程直接SetItem調用,您需要將事件發佈到主線程並在事件處理程序中添加項目。列表控件事件的數據應放置在自定義事件類中。請參閱wxPostEvent函數和這裏的詳細信息:http://wiki.wxwidgets.org/Custom_Events

+0

你的意思是說在線程類中我們得到的值被填充並傳遞給主線程(從線程調用的地方)那裏我應該使用setItem來填充wxListCtrl的值..我試了很多,但我怎麼可以發佈事件發送數據以及如何獲取主線程中的數據 – Arjun 2011-02-17 12:53:57

0

您正在訪問一個非另一個線程從線程wxListCtrl,這將無法正常工作。

更好的解決方案可能是跳過線程,使用wxTimer,然後每次調用OnTimer時填充400個以上的條目。

相關問題