![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
sheka |
![]()
Сообщение
#1
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Synchronize делает неактивным приложение, в то время как без него работает. Какие есть варианты решения этой проблемы? В form1.proc есть работа с VCL.
Код (Показать/Скрыть)
Где можно найти нормальное описание Synchronize? Сообщение отредактировано: sheka - 15.12.2011 18:48 |
![]() ![]() |
sheka |
![]()
Сообщение
#2
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Хорошее описание, спасибо.
Цитата Дело в том, что метод вызываемый посредством Synchronize() выполняется в контексте основного потока приложения. Это как раз и обеспечивает возможность использования нереентерабельных VCL-компонент. Некоторая информация должна обновляться из базы данных через достаточно короткий промежуток времени. Это обновление происходит ~2 секунды, что есть недопустимо долго. Работа с базой происходит через TIBQuery. Как реализовать данный момент? Как делаю я: В потоке создаю новый IBQuery2, считываю ним информацию из базы. Т.к. с IBQuery2 ничего не взаимодействует, то можно это сделать без использования Synchronize(). А как можно полученную IBQuery2 информацию "присвоить" тому, с которым работает вся остальная программа? |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 13:49 |