|
file -> new -> Thread Object 루 Thread를 하나 만들고 나서
메인 폼에서.
Com1Thread* Com1Th;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Com1Th = new Com1Thread(true);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Com1Th->Terminate();
delete Com1Th;
}
이렇게 버튼 1번을 누르면 Thread 실행 2번을 누르면 Thread 종료...
근데 문제는 실행 버튼인 1번을 연속으로 여러번 누를 경우 여러개의 쓰래드가
계속 생깁니다.. 그리구 2번 버튼으로 쓰래드를 파기 할경우 한번눌러 준후
한번더 누르게 되면 프로그램이 다운되어 버립니다.
물론 여러번 실행 버튼을 눌러 쓰래드를 생성했을경우 종료 버튼을 어려번 눌러 버리면
프로그램 다운됩니다..
한번 생성된 쓰래드를 파기 할경우 api 에 보면
ExitThread, TerminateThread 이렇게 두개가 있든데요..
ExitThread 는 관련 DLL등 모두 다 종료를 하고 쓰래드 스스로 파기를 하게끔하고.
TerminateThread 는 급할경우 바로 쓰래드를 종료 해버린다고 설명이 되어 있습니다.
그렇다면 빌더에서 쓰래드를 생성해서..
위에처럼 Com1Th->Terminate() 해주면 어떻게 되는건가요?
|