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
[39667] [질문]스레드 중지와 실행
초보자 [] 1259 읽음    2005-03-28 18:09
스레드의 Execute() 에서 실행하고 Suspend(); 한다음에
하고 Main Form 에서 Resume(); 하면 되나요?
몇일동안 고생하고 있습니다.
아시는분 도와주십시요.

그리고 한가지 더 있습니다.
스레드를 생성하면 Handle Count가 증가합니다.(제어판에 성능에서 확인)
Execute()를 할때마다 역시 Handle Count가 증가합니다.
Handle Count를 증가하지 않게 하려면 어떻게 해야하지요?
그냥 나두면 1달도 채 못가서 Server가 멈추어 버립니다. (Server에 계속 Data를 저장합니다.)


//스레드
__fastcall TSckReConn::TSckReConn(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    FreeOnTerminate = true;
    Priority = tpIdle; // 우선순위를 tpTimeCritical를 줘도 마찬가지 입니다.
}
//---------------------------------------------------------------------------

void __fastcall TSckReConn::Execute()
{
    while(!Terminated)
    {
        if( 조건이 맞으면 )
        {
            Sleep(100);
            실행;
        }
        else
        {
            Suspend();
        }
    }
}
//---------------------------------------------------------------------------

// Main Form
TSckReConn  *SckReConn[1];
void __fastcall TfrmMain::FormShow(TObject *Sender)
{
    SckReConn[0] = new TSckReConn(0);
}
//---------------------------------------------------------------------------

void TfrmMain::Re_Connect(int nsock)  // Timer에 의해서 1분 마다 호출합니다.
{
    // 맨 처음에만 Execute() 실행하고 어떤경우(다시 실행했을때)는 아주 가끔 실행합니다.
    // Execute() 으로 가지않고 그냥 아래로 넘어갑니다.
    SckReConn[0]->Resume(); 
   
    생략...
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
39667 [질문]스레드 중지와 실행 초보자 1259 2005/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.