問題如題
這是創建執行緒
void __fastcall Tfrm_Main::tv_RightClick(TObject *Sender)
{
//獲取點擊位置的節點資訊
TTreeNode *tn = tv_Right->GetNodeAt(pX,pY);
if(tn == NULL)
{
return;
}
tv_Right->Selected = tn;
lbl2->Caption = tv_Right->Selected->Text;
//利用執行緒進行查詢 SeachDataHD
HANDLE hThread = CreateThread(NULL,0,SeachDataHD,NULL,0,NULL);
CloseHandle(hThread);
for(int i = 0;i < this->ComponentCount;i++)
{
if(this->Components[i]->ClassNameIs("TSpeedButton"))
{
TSpeedButton *btn = (TSpeedButton *)this->Components[i];
if(btn->Name.Pos("btn_chklst_"))
{
delete btn;
i--;
}
}
}
}
這是執行緒函式
DWORD WINAPI SeachDataHD(LPVOID lpParamter)
{
frm_Main->Func_DrawGrid(frm_Main->tv_Right->Selected->Text);
}
每當運行到執行緒內,呼叫frm_Main->tv_Right->Selected->Text時,就出錯了。我跟蹤了,發現frm_Main->tv_Right是空的
uj5u.com熱心網友回復:
在執行緒里操作vcl界面控制元件的時候要用同步方法 Synchronize轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110062.html
標籤:基礎類
上一篇:VS2010的output的視窗中輸出的除錯資訊可以輸出到文本檔案中嗎?
下一篇:新手求解
