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
[50811] Re:Thread 가 Terminate 되기 바로 전에 호출되는 가상 함수나 이밴트가 있나요?
il's [magicfox] 1303 읽음    2007-10-10 20:46
시녕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;
    }
}


그럼 오늘도 즐거운 하루 되세요 ~

+ -

관련 글 리스트
50796 Thread 가 Terminate 되기 바로 전에 호출되는 가상 함수나 이밴트가 있나요? 시녕tm 1477 2007/10/10
50811     Re:Thread 가 Terminate 되기 바로 전에 호출되는 가상 함수나 이밴트가 있나요? il's 1303 2007/10/10
50837         감사합니다.~ ^^ 시녕tm 967 2007/10/11
50797     Re:Thread 가 Terminate 되기 바로 전에 호출되는 가상 함수나 이밴트가 있나요? 장성호 1752 2007/10/10
50838         감사합니다.~ ^^ 시녕tm 1189 2007/10/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.