|
TIdTCPServer를 이용해 소켓프로그래밍을 하고 있습니다.
클라이언트가 접속할때마다 클라이언트를 관리할 클래스를 동적생성하는데요..
그 클래스의 생성자함수에서 TTimer를 또 동적생성해서 타이머를 작동시킵니다. (필요에의해서..)
하지만 이렇게 생성시킨 타이머가 전혀 작동하지 않네요..
일단 소스입니다.
//------------------------------------------------------------------
// OnConnect() 함수
void __fastcall TfrmMain::TCPServerConnect(TIdPeerThread *AThread)
{
cVmsClient *Client;
Client = new cVmsClient(this);
Client->VmsIP = AThread->Connection->Binding->PeerIP;
Client->VmsID = GetVmsID(Client->VmsIP);
Client->Thread = AThread;
...
}
// cVmsClient 클래스의 헤더파일
class cVmsClient : public TObject {
private:
int CommStat;
public:
AnsiString VmsID;
AnsiString VmsIP;
void* Thread;
TTimer* CommTimer;
cVmsClient(TComponent* Owner);
...
void __fastcall OnCommTimer(TObject *Sender);
};
// cVmsClient 클래스의 cpp파일
cVmsClient::cVmsClient(TComponent* Owner) {
CommTimer = new TTimer(Owner);
CommTimer->Interval = 3000;
CommTimer->OnTimer = OnCommTimer;
CommTimer->Enabled = true;
...
}
void __fastcall cVmsClient::OnCommTimer(TObject *Sender)
{
...
}
//------------------------------------------------------------------
이 함수만 적어드리면 되겠죠?
이상한 점은 cVmsClient클래스를 TfrmMain안의 Connect와 상관없는 아무 함수에서
생성하면 타이머는 정상적으로 동작합니다.
꼭 TCPServerConnect()함수 안에서만 안되네요..
왜 그런지 가르켜주시겠습니까? ^^;;
|