|
TInitDataThread는 오타이고 TTestThread가 맞는거죠?
쓰레드 내에서 외부의 VCL 객체에 액세스할 때는 보통 Synchronize 메서드를 통해서 합니다.
void __fastcall TTestThread::Execute()
{
Synchronize(UpdateOuterVCL);
}
void __fastcall TTestThread::UpdateOuterVCL(void)
{
Form1->FTest(10);
Form2->Close();
}
현재 님이 제시한 코드대로라면
void __fastcall TForm1::FTest(int temp) 메서드 내에서는 전달된 매개변수로 value 값을 설정하기는 하지만 Label1->Caption은 지우고만 있군요.
Priority = tpIdle;이라면 가장 낮은 우선순위이고 시스템이 유휴 상태에 접어들 때만 실행되는 것으로 설명되어 있습니다.
따라서 TTestThread::Execute() 메서드가 실제로 실행이 되고 있는지부터 검사해보아야 겠습니다.
그리고, "실제로는 더 많은 컴포넌트들과 변수들이 관계됩니다"라고 하셨습니다.
그렇다면, 아래 Windows API 함수들을 참조하시면 도움이 되겠습니다.
CreateSemaphore, WaitForSingleObject, ReleaseSemaphore
InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection
|