Совместное использование базы данных с потоками вместо создания новых - PullRequest
1 голос
/ 08 ноября 2011

Я хотел проверить это, прежде чем попытаться.Я работаю над парой потоков, которые требуют извлечения данных из базы данных внутри потоков.В настоящее время, основываясь на всем, что я видел, я создаю новое соединение с базой данных (TADOConnection) из потоков.Все работает нормально, за исключением того, что было бы здорово, если бы я мог получить объект подключения где-то за пределами потока.По сути, я не хочу продолжать создавать новый TADOConnection для каждого выполнения потока.

Можно ли опубликовать свойство TADOConnection снаружи потока (таким образом, назначив его при создании потока), а затемиспользовать это соединение в потоке?Все, что мне нужно сделать, это создать TADODataSet внутри потока и назначить его соединение с этим TADOConnection.Я немного сомневаюсь в этом, особенно потому, что мне нужно вызывать CoInitialize и CoUninitialize при работе с ADO в потоке.

1 Ответ

1 голос
/ 11 ноября 2011

Ответ выглядит как нет. Поскольку TADOConnection (и другие компоненты ADO) основаны на COM, их нельзя передавать по потокам. Так что в этом случае у меня нет выбора, кроме как создать новый TADOConnection в каждом потоке. Потоки, которые продолжают работать, используют это соединение каждый раз, когда оно зацикливается, но одиночные потоки используют его только один раз.

...