|
물론 DBMS는 Process나 Thread에 무관하게 돌아갈 수 있도록 디자인되어 있습니다.
ADO가 얼마나 안정적인가는 의문이지만 말이죠(Oracle이나 SQL Server정도라면 믿음을 주셔도 상관없습니다).
문제는 어떤 DBMS를 사용하느냐가 아니고
Main Thread가 아닌 다른 Thread에서 VCL자체가 생성되고 사용되고, 삭제되는 것입니다.
확실하지는 않지만 TADOQuery가 thread에 안정적으로 돌아가는지를 먼저 확인해 보셔야 겠네요.
제임스 님이 쓰신 글 :
: {
: TADOQuery *temp_query=new TADOQuery(NULL);
: temp_query->Connection=ADOConnection1;
: AnsiString sql="select * from DB_NAME where userid='" + strUSERID
: + "'";
: temp_query->SQL->Text=sql;
: int total_recordcount;
: try {
: temp_query->Open();
: }
: catch (...) {
: delete temp_query;
: return USERID_INCORRECT;
:
: }
:
: AnsiString strDataPassword=temp_query->FieldByName("PASSWORD")->AsString;
: total_recordcount=temp_query->RecordCount;
:
: .....
:
: }
:
: 위의 소스는 쓰레드에서 돌아가는 부분인데요.. 여러 쓰레드가 읽고 쓸때 깨지지 않게 하기 위해서는
:
: 어떻게 처리해야되나요? 지식이 짧아서 잘모르겠네엽.
:
:
: CriticalSection을 둬야될지 Lock을 거는 부분이 따로 있는지.
:
: 아니면 원래 Thread에서 independent한지 알고 싶습니다.
:
:
: 도와주세요.
:
: 감사합니다.
:
:
|