powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление информации в ListView
3 сообщений из 3, страница 1 из 1
Обновление информации в ListView
    #38503742
Фотография Алкобобёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя программа читает данные из XML файла и отображает их в ListView
Другая программа, изменяет данные в этом файле. Добавляет или удаляет записи.
Как мне организовать обновление информации в ListView?
Сейчас я читаю файл каждые 5 секунд, и заново перезаливаю данные в ListView.
Это неудобно для работы, интерфейс мерцает, выделение в ListView сбрасывается при перерисовке. Как лучше синхронизировать эту коллекцию в XML и мой ListView?
...
Рейтинг: 0 / 0
Обновление информации в ListView
    #38503995
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Обновление информации в ListView
    #38504415
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлкобобёрКак мне организовать обновление информации в ListView?
Сейчас я читаю файл каждые 5 секунд, и заново перезаливаю данные в ListView.
Это неудобно для работы, интерфейс мерцает, выделение в ListView сбрасывается при перерисовке. Как лучше синхронизировать?..
Ясно дело, что это неудобно, некрасиво, а если данных будет несколько тысяч строк, то твоя конструкция еще и висеть будет.

Я тебе дам идею (как я делаю) а ты уж решай. Я правда с mdb работаю, но суть та же.
Есть таблица Table с много записей, кот. отображаются в ListView (это цивильней чем со всякими гридами и прочей мазней).
При старте (или по Refresh) все записи естественно добавляются последовательно Listview.Items(i).Add
Другая программа работает с Table (Add, Replace, Delete).
Тебе никто не мешает сделать другую таблицу
TableChange, и когда другая программа делает что-то с записью в Table,
то пусть она параллельно логирует изменения в TableChange:
action=Add; RecordID=2222
action=Replace; RecordID=333
action=Delete; RecordID=4566

Т.е. прога (которая с ListView) читает не 5000 строк в Table а 10 строк в TableChange.
Да хоть раз в секунду таймер делай.

Все что тебе надо сделать, это
1) Прочитать "записи об изменениях" в TableChange
2) прочитать эти изменения в основной таблице Table (ключи указаны)
3) отразить в LV эти изменения
action=Add -> Listview.Items(2222).Add
action=Replace -> Listview.Items(333)=
action=Delete -> Listview.Items(4566).Remove
3) Удалить "записи об изменениях" в TableChange

Прыгать, мерцать и вешаться ничего не будет.
Недавно тесты делал: грубо 6000 записей в БД(mdb)/LV, 50 записей активных (т.е. те, данные кот. непрерывно меняются в тек. момент), таймер обновления LV на 1 сек, работает как часики и без спецэффектов.

Правда делал это в VB6. Плюс LV заменил на чисто API (CreateWindowEx).
15016495
15058699

В .Net-овской LV-обертке еще свои "спецэффекты" могут быть, но они не должны быть сильно критичными. Но иногда "мелочи" могут очазаться совсем не мелочами при "больших нагрузках" (и дело далеко не в "красотах"). По крайней мере в VB6 я отказался от "Контрола" и написал свой API-класс из-за поганого эффекта контрола с постоянным прокручиванием на Selected запись, подробности в первой ссылке.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление информации в ListView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]