|
프로그램에서 쓰레드를 많이 사용해서
데이타베이스를 액세스하는 쓰레드를 하나 만들어서 3초에 한번씩 검색해서
데이타를 집어넣는 알고리즘으로 사용하려고 합니다.
class TWriteDB : public TThread
{
private:
TDatabase *database;
// TSession *Session;
TQuery *wDB;
protected:
void __fastcall Execute();
public:
__fastcall TWriteDB(bool CreateSuspended);
};
void __fastcall TWriteDB::Execute()
{
//---- Place thread code here ----
// Session = new TSession(NULL);
// Session->SessionName = "Thread"+IntToStr(ThreadID);
database = new TDatabase(NULL);
wDB = new TQuery(NULL);
database->Connected = false;
database->AliasName = "TegArs";
// database->SessionName = Session->SessionName;
database->DatabaseName = "HUR";
database->Params->Clear();
database->Params->Add("user name = ");
database->Params->Add("password = ");
database->LoginPrompt = false;
database->KeepConnection = true;
database->Name = "DB";
database->Connected = true;
// wDB->SessionName = Session->SessionName;
// wDB->DatabaseName = "TegArs";
wDB->DatabaseName = "HUR";
wDB->RequestLive = true;
while(!Terminated)
{
if(fm_kmain->DBList->Count > 0)
{
// EnterCriticalSection(&CS);
while(fm_kmain->DBList->Count > 0)
{
//데이타를 DB에 기록한다.
// Application->ProcessMessages();
}
fm_kmain->DBList->Delete(0);
}
// LeaveCriticalSection(&CS);
}
Sleep(3000);
}
wDB->Free();
database->Free();
// Session->Free();
Terminate();
}
위와 같이 데이타베이스와 퀴리를 동적생성시켜서 사용하려고 하는데요.
데이타는 정상적으로 들어 가는데 종료할때 가끔
SessionName을 정의해 주지 않았다는 메시지가 나옵니다.
위와 같이 하는 것이 틀린 방법인가요.
|