Показать сообщение отдельно
  #7  
Старый 08.09.2014, 19:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,098
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Метод Synchronize нужен только тогда, когда происходит обращение к VCL (и не только к VCL) объектам, находящимся В ГЛАВНОМ ПОТОКЕ ПРИЛОЖЕНИЯ. В данном же случае все компоненты находятся в дополнительном потоке, так что с этим проблем быть не должно.

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

Так что тут, видимо, действительно дело в прямом вызове метода Execute, который, вообще-то, должен быть в секции protected, но ТСом перенесен в секцию public, что и позволило вызвать этот метод напрямую в основном потоке приложения, а не создавая дополнительный поток.

ТС, поменяй вызов Execute на выов Resume и наступит тебе счастье
Ответить с цитированием