|
//---------------------------------------------------------------------------
void __fastcall CSectionManager::Execute()
{
for (j=0;j < 500;j++)
{
if (ModuleNode->Item[j]->Text.SubString(1,2) == "OK")
continue;
if (FileExists(Filename1)){
blockNodeName.sprintf("Block Number : %05d",j);
} else if (FileExists(Filename)) {
blockNodeName.sprintf("Block Number : %05d",j);
RenameFile(Filename,Filename1);
} else {
continue;
}
Synchronize(ShowStatus);
}
}
//---------------------------------------------------------------------------
void __fastcall CSectionManager::ShowStatus(void)
{
ModuleNode->Item[j]->Text = blockNodeName;
}
//---------------------------------------------------------------------------
위 소스는 제가 사용하는 스레드 클래스 소스의 일부분입니다.
메인폼에는 트리가 있고 트리는 특정디렉토리의 일련번호파일들을 나타내고있습니다.
메인에서 저 스레드를 생성시키면
스레드는 소스에서처럼 두종류파일(Filename, Filename1)을 찾아보고 있으면 Synchronize를 통해서 메인폼의
트리에서 해당 노드의 Text속성을 변경시킵니다.
그런데 이 과정이 속도가 너무 느립니다.
화면을 보고 있으면 약 500개 정도의 노드가 있는데 하나씩 변경되는 모습이 보입니다.
이전에 스레드를 사용하지 않고 메인에서 바로 변경을하면 변경되는 모습을 볼수 없었는데
스레드를 사용하니 너무 확연히 보입니다.
제 생각은 일일이 Synchronize를 들낙날낙해서 속도가 느린것같습니다.
무슨 연유로 이렇게 느릴까요???
고수님들의 답변 부탁드립니다.
그리고 이걸 해결할 수 있는 방법은 없을까요???
읽어주셔서 감사합니다. ^^
|