Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
 smile 

Автор: 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
Цитата(Bose @ 12.3.2014,  16:45)
Можно вынести в поток IbQuery (но учитывай, что он должен работать через отдельное подключение (отдельный экземпляр IbDatabase + IbTransaction - там же в потоке)). Единственно, где это поможет - это в случае, если сам Sql запрос в бд выполняется долго.

Но перегонять данные из IbQuery в MemTableEh надо уже в главном потоке (возможно что придётся для этого отказаться от DataSetDriverEh).

p.s. кстати, от таймера для обновления данных можно вообще отказаться, а вместо этого использовать IbEvents (из БД в программу слать event, при обновлении данных). event-ы лучше кешировать и вызывать обновление с задержкой, так как при массовых обновлениях event-ов может быть много.

Спасибо огромное, про Event'ы вобще не знал спасибо почитаю... Честно сказать перешел на DevExpress и использую сейчас cxGrid

Автор: Bose 15.3.2014, 23:56
Цитата(Antony41 @  14.3.2014,  07:25 Найти цитируемый пост)
Честно сказать перешел на DevExpress и использую сейчас cxGrid 

С cxGrid-ом вроде всё вышеописанное верно. Или не?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)