|
시녕tm 님이 쓰신 글 :
: 안녕하세요
:
: Thread를 사용하다가 Terminate 시킬 때 Terminate() 라는 멤버 함수를 사용하는데요.
:
: 이 함수가 호출된 후에 Thread가 메모리 상에서 실제로 삭제되기 전에
:
: 최종으로 호출 되는 가상함수라던지 잡아서 쓸만한 이밴트라던지 그런거가 혹시 있나요?
:
: Thread에서 사용한 변수들이나 메모리 할당된 놈들을
:
: 그 함수에서 모조리 처리하고 싶은데....
:
: 혹시 좋은 방법 아시는 분은 알려주시면 감사하겠습니다.
UserThread.h
class TUserThread : public TThread
{
private :
protected :
void __fastcall Execute();
public:
TClientSocket *FDeviceSocket;
__fastcall TUserThread (bool CreateSuspended);
__fastcall virtual ~TUserThread (void);
}
위와 같이 __fastcall virtual ~TUserThread (void) 파괴자을 추가합니다.
UserThread.cpp
__fastcall TUserThread ::TUserThread (bool CreateSuspended)
: TThread(true)
{
FDeviceSocket = new TClientSocket(NULL);
}
//---------------------------------------------------------------------------
__fastcall TUserThread ::~TUserThread ()
{
// Thread가 종료 될때 처리할 부분
if (FDeviceSocket != NULL)
{
FDeviceSocket->Active = false;
delete FDeviceSocket;
}
}
그리고 위의 Thread를 쓰는 부분에서
void __fastcall TMainForm::UserThreadCreate()
{
if (UserThread == NULL)
{
// 이곳에서 UserThread ->OnTerminated == true 를 쓰지 않습니다.
UserThread = new TUserThread (true);
UserThread ->Resume();
}
}
void __fastcall TMainForm::UserThreadDestory()
{
if (UserThread != NULL)
{
UserThread ->Terminate();
UserThread ->Free(); // Free를 하게 되면 Tread의 파괴자가 실행되게 됩니다.
UserThread = NULL;
}
}
그럼 오늘도 즐거운 하루 되세요 ~
|