|
bugfree 님이 쓰신 글 :
: 그린비 님이 쓰신 글 :
: : 안녕하세요~!
: : 쌀쌀한 날씨에 관심 가져 주셔서 감사드립니다~~
: :
: :
: : 쓰레드를 처음 해보다 보니 많이 막히네요 ㅋ
: : 쓰레드 종료 관련하여 궁금한 부분 질문 드립니다.
: :
: :
: : 질문1) 쓰레드를 종료 할때 이런식으로 사용해도 괜찮은가요~?, 혹시 다른 방법을 써야 더 안전한가요?
: : TestThread->Terminate();
: : delete TestThread;
: : TestThread = NULL;
: :
: : 질문2) 서브 쓰레드가 동작 중에 메인 프로그램을 종료하게 되면, 자동으로 서브 쓰레드가 정상 종료 되는 건가요?
: :
: : 질문3) 만약 서브 쓰레드가 서버에 접속하여 파일을 전송 중인데, 이때 메인프로그램을 종료하게 되면
: : 서브 쓰레드가 동작은 완료하고 종료가 되나요? 아니면 중도에 강제 종료가 되버리나요?
: : 또한 그렇게 종료가 된다면, 서브 쓰레드는 정상적으로 종료가 되는 건가요~~?
: :
: :
: : 부디 조언 부탁 드립니다~~~~~!
: :
: :
:
: 쓰레드 소멸자에서 미리 만들어 놓은 이벤트 핸들을 날려 쓰레드
: 루프가 종료되게 해놓으면, 프로그램 종료 -> 폼객체 해제 ->
: 쓰레드 소멸자 -> 이벤트 -> 쓰레드 루프 종료
: 로 이어져서 쓰레드 신경쓸게 없던데요
우선 제가 원하는 건 프로그램이 종료 될 때, 서브 쓰레드를 잘 종료하는 것인데요
이런식으로 한다는 말씀인가요~??
FreeOnTerminate = true 로 놓고,
소멸자에서 Execute() 루프를 종료시킬 수 있도록 Terminate() 하는 것~??
//---------------------------------------------------------------------------
__fastcall TTestThread::~TTestThread(void)
{
Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TTestThread::Execute()
{
//---- Place thread code here ----
while(!Terminated)
{
}
}
그리고, 서브 쓰레드의 동작이 완료되는 걸 확인하고 종료하려면
TestThread->Terminate();
TestThread->WaitFor();
TestThread->Free(); or Delete TestThread;
와 같은 방법을 사용 해야 할까요?
|