Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Пропуск dde-данных |
Автор: Flap 21.4.2008, 08:57 |
Помогите с проблеммой, точнее их две: 1. Моя программа в режиме Advise слушает некий сервер с которого падают данные. Эти данные надо принять и поместить в таблицу в определенную строку. Проблемма в том, что, когда эти данные валят часто, то случаются пропуски и в таблице появляются пробелы. Как этого можно избежать? 2. Далее, TDdeClientItem очень много, все они создаются динамически и хранятся в TList. И у всех OnChange - один и тот же. Собственно в этой OnChange и происходит запись в таблицу. Можно как-то сделать так, чтобы TDdeClientItem был один и просто ловил все, что падает на TDdeClientConv? OnChange уже оптимизировал как мог. Работу с таблицей я ускорить не могу уже (там всего один Locate, далее Edit и Post). Поможет ли в этом случае многопоточность и как, в этом случае, синхронизивать запись из всех потоков в одну таблицу? В качестве таблицы использую TMemTableEh. Буду очень признателен, за хоть какие-нибудь советы. Спасибо. |
Автор: bems 22.4.2008, 12:32 |
если "лавины" данных чередуются с "затишьями", то можно обойтись и без потоков. В OnChange пиши данные в промежуточное хранилище (экономия времени на Locate), а при простое приложения пиши в базу. |
Автор: Flap 22.4.2008, 14:11 |
Так в том-то и дело, что неизвестно, когда будет затишье. Начну кэш разгребать, а они опять посыпятся. Буду думать дальше. Хотя, как вариант, можно вообще от таблицы отказаться, а сделать что-то быстрое. |