|
스레드의 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();
생략...
}
//---------------------------------------------------------------------------
|