|
Main.h 에서
TBThread* pBoot;
void TFormMain::StartButton(int num)
{
pBoot = new TBThread(num);
pBoot->ThreadStart();
}
쓰레드 화일에서는
__fastcall TBThread::TBThread(int Num) TThread(true)
{
FreeOnTerminate = true;
Priority = tpNormal;
ThreadNum = Num;
Resume();
}
void __fastcall TBThread::Execute()
{
while(!Terminated)
{
CriticalSection.Lock();
UpdateThread();
CriticalSection.Unlock();
}
}
void __fastcall TBThread::UpdateThread(void)
{
switch(ThreadNum)
{
case 0 : FormMain->Run1(); break;
case 1 : FormMain->Run2(); break;
case 2 : FormMain->Run3(); break;
case 3 : FormMain->Run4(); break;
default : ShowMessage("TBootThread::UpdateThread Error ");
break;
}
}
위와 같이 하면 메인에서 StartButton()을 클릭 num이 0일경우
case 0 인 FormMain->Run1(); 이 실행됩니다..
그러나, 계속됩니다. 전 한번만 실행하고 싶은데... while(!Terminated) 때문에
계속되더라구여..어떻게 하면 제가 StartButton()을 클릭할때마다 여러가지 다른
case 0,1,2,3 으로 동작하게 할수 있을까여?
그리고 메인에서 pBoot = new TBThread(num) 이 함수는 계속 생성만 되는데..
하나의 동작이 끝나면 소멸해줘야 될거 같은데..어디서 소멸 시켜줘야 할지
모르겠습니다.
|