2009-08-06 14 views
9

많은 다른 스레드에서 동일한 SQL Server 데이터베이스에 동시에 액세스해야하는 Delphi 7 응용 프로그램을 작성하고 있습니다.Delphi의 TADOConnection은 스레드로부터 안전한가요?

하나의 공유 TADOConnection을 사용할 수 있습니까? 아니면 각 스레드가 고유 한 TADOConnection을 만들어야합니까?

답변

18

Blorgbeard의 경우 각각의 스레드에 대해 별도의 TAdoconnection 인스턴스를 만들고 초기화하고 열어야합니다.

ADO는 COM 기반 기술입니다. 그것은 아파트 스레드 개체를 사용, CoInitialize (nil)를 호출하는 것을 잊지 마세요.

procedure TMyThread.Execute; 
begin 
    CoInitialize(nil); 
    try 
    try 
     // create a connection here 
    except 
    end; 
    finally 
    CoUnInitialize; 
    end; 
end; 
9

아니요, 아닙니다. ADO는 COM 기반 기술입니다. 아파트 스레드 개체를 사용하므로 스레드 경계를 넘어 ADO 연결을 사용할 수 없습니다. 각 스레드는 자체 연결이 필요합니다.