|
CRITICAL_SECTION CS;
폼에
void __fastcall TForm1::Update(int no,String Msg)
{
EnterCriticalSection(&CS);
ListBox1->Items->Add(IntToStr(no)+Msg);
LeaveCriticalSection(&CS);
}
int __fastcall TyThread::Execute()
{
while(true)
{
MyPrg(no);
}
}
int __fastcall TyThread::MyPrg(int no)
{
....
Form1->Update(no,msg);
.....
Form1->Update(no,msg);
}
폼에 페이지컨트롤을 하나 놓고 페이지를 여러개 놓은 중에 하나의 페이지에 ListBox
가 있습니다.
이 ListBox의 Item에 여러개의 쓰레드가 내용을 추가하려고 합니다.
그런데 쓰레드 하나만 띄워놓고도 데이타를 추가하면 원도우 핸들을 읽어버리는것 같습니다.
Append되는 페이지의 컨트롤을 누르면 그때부터 그 페이지컨트록은 먹통이 됩니다.
페이지 컨트롤의 한 페이지(업데이트되는)를 클릭하면 내용이 없고 자기 맘대로
페이지 컨트롤이 움직입니다.(쓰레드에서 업데이트 할때)
위와 같이 쓰레드를 구현하는것이 틀린건가요.
참고로 쓰레드에서 폼의 컨트롤에 업데이트 하는 부분을 삭제후 테스트 하면
정상적으로 작동합니다.
그리고 페이지 컨트롤이 아닌 폼에 ListBox를 직접적으로 올려 놓으면
정상작동을 하는데..
페이지 컨트롤에서 업데이트되는 페이지가 선택안되어 있어도 상관없이
업데이트되어야 하는것 아닌가요.
그럼, 조언 부탁드립니다.
|