Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > EhLib как бы правильно поступить |
Автор: Antony41 11.2.2014, 20:12 |
Ребят нужен совет профессионала компоненты DbGridEh, MemTableEh, DataSetDriverEh лежат на форме и находятся в главном потоке, при этом есть таймер который переодически обновляет запрос в IbQuery, при обновлении приложение подтормаживает, это всё понятно почему, и для того чтобы не тормозило нужно выполнять запрос в отдельном потоке, но вот какие компоненты должны быть в этом отдельном потоке все три? как их правильно связать из потока? с DbGridEh? |
Автор: Antony41 20.2.2014, 15:30 |
кто нибудь подскажет или ткните куда нибудь почитать. |
Автор: Antony41 6.3.2014, 18:50 |
![]() |
Автор: Bose 12.3.2014, 16:45 |
Можно вынести в поток IbQuery (но учитывай, что он должен работать через отдельное подключение (отдельный экземпляр IbDatabase + IbTransaction - там же в потоке)). Единственно, где это поможет - это в случае, если сам Sql запрос в бд выполняется долго. Но перегонять данные из IbQuery в MemTableEh надо уже в главном потоке (возможно что придётся для этого отказаться от DataSetDriverEh). p.s. кстати, от таймера для обновления данных можно вообще отказаться, а вместо этого использовать IbEvents (из БД в программу слать event, при обновлении данных). event-ы лучше кешировать и вызывать обновление с задержкой, так как при массовых обновлениях event-ов может быть много. |
Автор: Antony41 14.3.2014, 08:25 | ||
Спасибо огромное, про Event'ы вобще не знал спасибо почитаю... Честно сказать перешел на DevExpress и использую сейчас cxGrid |
Автор: Bose 15.3.2014, 23:56 |
С cxGrid-ом вроде всё вышеописанное верно. Или не? |