C #, WinForms: какой тип представления для периодически обновляемого списка? - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть приложение, которое периодически опрашивает веб-сервис (примерно каждые 10 секунд). В моей логике приложения у меня есть List<Message>, содержащий сообщения. Все сообщения имеют идентификатор и могут быть получены не по порядку. Поэтому класс реализует интерфейс Comparable.

Какой элемент управления WinForm будет обновляться регулярно (с элементами в порядке). Я планирую провести последние 500 сообщений. Должен ли я отсортировать список, а затем обновить всю форму? Или привязка данных оценивается (в отношении производительности)?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Если вы работаете с WinForms, я порекомендую элемент управления ListView с установленным для свойства View свойством Details вместе с элементом управления BackgroundWorker.

1 голос
/ 14 апреля 2010

Я бы использовал привязку данных с BindingList в System.ComponentModel, упаковывающей ваш список.

BindingList в этом случае позволит вам обновить объект List новыми данными и автоматически переназначит ваши данные для элемента управления, который вы используете для отображения.

какой элемент управления вы используете, будет зависеть от того, как вы хотите, чтобы он выглядел. любой элемент управления, который поддерживает привязку данных к коллекции, будет работать, однако.

1 голос
/ 13 апреля 2010

Если список будет меняться каждый раз, а ваш заказ не поступает последовательно, я просто отсортирую ваш список и обновлю весь пользовательский интерфейс.

Вы должны быть в состоянии выполнять выборку списка + сортировку в фоновом потоке, поэтому основная блокировка "UI" будет просто перерисовывать UI. С 500 элементами это не будет быстро, но должно быть терпимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...