C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[24994] [질문]쓰레드 문제..
바램 [carl] 807 읽음    2003-03-31 17:25
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) 이 함수는 계속 생성만 되는데..
하나의 동작이 끝나면 소멸해줘야 될거 같은데..어디서 소멸 시켜줘야 할지
모르겠습니다.

+ -

관련 글 리스트
24994 [질문]쓰레드 문제.. 바램 807 2003/03/31
32205     Re:[질문]쓰레드 문제.. 김백일.cedar 797 2003/03/31
24999     Re:[질문]쓰레드 문제.. Julien 828 2003/03/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.