2009-08-06 2 views
9

Я пишу приложение Delphi 7, которому необходимо одновременно обращаться к одной и той же базе данных SQL Server из множества разных потоков.Является ли Delphi TADOConnection потокобезопасным?

Могу ли я использовать один общий TADOConnection, или каждый поток должен создавать свои собственные?

ответ

18

Blorgbeard, вы должны создать, инициализировать и открыть отдельный экземпляр TAdoconnection для каждого из ваших потоков.

ADO - это технология на основе COM. Он использует квартиры с резьбой объектов, не забудьте позвонить CoInitialize (ноль).

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

Нет, это не так. ADO - это технология на основе COM. Он использует объекты с резьбой, поэтому вы не можете использовать соединения ADO через границы потоков. Для каждого потока требуется собственное соединение.

Смежные вопросы