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
[54356] 동적으로 생성된 TMemo에 접근하는 TThread 객체 종료 시키는 방법 좀 알려 주세요 ㅜㅜ
개발자되기 [swish1] 1357 읽음    2008-08-20 16:45
class TForm_CommMain : public TForm
1. TMemo 동적으로 생성
2. TCommInterFace 동적으로 생성

class TCommInterface
1. 동적으로 생성된 TMemo의 포인터를 넘겨 받음
2. CPort 생성  (시리얼 통신)
3. TThread를 생성함

class TSerialThread : public TThread
1. TCommInterface에 있는 Cport의 포인터를 넘겨 받아 통신
2. Memo에 로그 기록

세가지 클래스를 생성했습니다.

TCommInterface::~TCommInterface    소멸자 부분
{
    if ( m_pComPort != NULL )
    {
        if ( m_pComPort->Connected )
            m_pComPort->Close();
        delete m_pComPort;
        m_pComPort = NULL;
    }
}

TCommInterface 에서 쓰레드 생성하는 부분
- 10초마다 타이머가 돌면서 쓰레드를 생성

        m_pSerialThread = new TSerialThread(false,this);
        m_pSerialThread->OnTerminate = Terminate_Thread;
        m_pSerialThread->Priority = tpTimeCritical;
        m_nThreadCnt++;


void __fastcall TCommInterface::Terminate_Thread(TObject *Sender)
{
    m_pSerialThread = NULL;
    m_nThreadCnt--;
}

TSerialThread 의 생성자 부분
__fastcall TSerialThread::TSerialThread(bool CreateSuspended,TCommInterface * _pParent)
    : TThread(CreateSuspended)
{
    m_pParent = _pParent;
    FreeOnTerminate = True;

}



프로그램이 도는 동안은 문제가 없습니다. 하지만 프로그램이 종료 될때 Cport가 동작 중이면 동적으로 생성한 TMemo의 삭제가 먼저 일어 나고 쓰레드가 나중에 종료 되는것 같습니다. (쓰레드가 종료 할때 Memo에 접근)

쓰레드가 종료 할때까지 기다렸다가 종료되는 방법은 없을까요?
아니면 뭔가 다른 문제가 있는 건가요??


제가 글을 쓰긴 했지만 무슨말인지 이해가 안될수도 있다는 생각이 드네요.. 어쨋든 읽어 주셔서 감사드리구요
조금이라도 도움이 될만한 조언있으시면 답글 남겨주세요..

+ -

관련 글 리스트
54356 동적으로 생성된 TMemo에 접근하는 TThread 객체 종료 시키는 방법 좀 알려 주세요 ㅜㅜ 개발자되기 1357 2008/08/20
54359         Re:Re:감사합니다... 개발자되기 1332 2008/08/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.