|
il's 님이 쓰신 글 :
: 시녕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;
: }
: }
:
:
: 그럼 오늘도 즐거운 하루 되세요 ~
|