powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF какой компонент выбрать для отображения
13 сообщений из 13, страница 1 из 1
WPF какой компонент выбрать для отображения
    #36784544
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть постоянно обновляемая таблица, состоящая из 50 строк и 5 полей. Обновляется 20 раз в секунду. Содержит только числовые данные. Должна быть возможна обработка кликов на ячейках, изменение цвета ячеек.

Крайне важна скорость обновления, то есть не должно быть никаких задержек визуализации. Как лучше реализовать это в WPF?
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36784821
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем так часто? Человек все равно не различит ни хрена за секунду 20 снимков. Или для чего то другого надо? Объясни для чего надо.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36784908
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.

Тут ряд моментов. Вообще скорость обновления будет подстроена под периодичность обновления данных сервером, который отправляет изменения в эту таблицу. Но 20 раз в сек это максимум, поэтому и написал. Минимум - 4 раза в секунду.

Второй момент - обработка таблицы автоматизирована. Я понимаю, что вывод с такой периодичностью для глаза человека бессмысленнен (а мой вопрос подразумевает вывод именно для глаза человека), и, учитывая, что на этот мой вопрос на форумах почти никто не отвечает, и наверное, это из-за требуемой скорости обновления, хотел бы уменьшить эту планку, или вообще убрать. То есть сказем так, нужен просто быстрый компонент WPF для вывода этого дела. Но 4 раза в секунду, это, можно сказать, минимум.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36784910
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, для чего надо: в этой таблице содержится важная оперативная информация, и оператор должен ее видеть, что называется, в реалтайме.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36785002
Осака
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DataGrid
(только не пытайтесь "записать данные в ячейки")
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36785125
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОсакаDataGrid
(только не пытайтесь "записать данные в ячейки")
+1
Попробуй его протестить. Естественно обновляя инфу в источнике данных у грида, как говорит Осака.

Таймер в отдельном потоке с периодичностью 4 раза в сек

ТелоТаймера()
{
Останов таймера;
Подгрузка данных;
Заливка в источник;
Запуск таймера;
}
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36785238
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
testing22... и, учитывая, что на этот мой вопрос на форумах почти никто не отвечает, и наверное, это из-за требуемой скорости обновления ...Нет. Это из-за неверной постановки задачи. Попробуйте представить себе пользователя, весь день наблюдающего за таблицей, мигающей как новогодняя ёлка XXX раз в секунду.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36789708
WPFdev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
testing22Есть постоянно обновляемая таблица, состоящая из 50 строк и 5 полей. Обновляется 20 раз в секунду. Содержит только числовые данные. Должна быть возможна обработка кликов на ячейках, изменение цвета ячеек.

Крайне важна скорость обновления, то есть не должно быть никаких задержек визуализации. Как лучше реализовать это в WPF?

Лучше самому на канве все отрисовывать. Так будет и быстрее, и мерцания не будет.
Данных немного, поэтому нарисовать свой графический контрол будет достаточно просто.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36791793
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть у меня варианты:

1. писать свой контрол
2. ListView
3. DataGrid
4. Canvas

Мерцания хотелось бы избежать в первую очередь. Видел, как это выглядит на формах - совершенно неприемлемо.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36791795
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(вернее, 1 и 4 это одно и то же)
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36791841
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие:
имеется канал данных, которые обновляются с периодом Т_пост;

данные нужно отображать пользователю в числовом виде;

не должно быть мерцания и т.д.

Вариант решения

установить период обновления текущего значения из канала данных для пользователя Т_обн так, чтобы Т_обн > Т_пост и Т_обн > 1 сек (или даже 2-3 сек.);

поступающие из канала данных значения записывать в массив, если и не все, то последние round(Т_обн / Т_пост) значений (т.е. набор значений с предыдущего обновления;

при обновлении выбирать максимальное (минимальное, среднее, медианное - в целом, наиболее критичное с точки зрения пользователя) для данного канала значение из последних round(Т_обн / Т_пост) поступивших и записанных в массиве, и отображать его пользователю.

Пример:

канал данных - сила тока в некоторой цепи, единица измерения - мА;

данные поступают 5 раз в секунду, т.е. Т_пост = 0.2 сек.

период обновления равен 2 сек., т.е. Т_обн = 2 сек.

размер массива данных равен Т_обн / Т_пост = 2 / 0.2 = 10;

при поступлении нового значения добавляем его в массив, удаляем самое первое значение, если размер массива превысил 10 ед.

при обновлении пишем в ячейку максимальное значение из имеющихся в массиве.

Такой подход позволит оператору нормально видеть значение контролируемого параметра, а программа сможет без особого ущерба для скорости обновления форматировать цвет ячейки в зависимости от значения. Получаемое при каждом обновлении максимальное за 2 сек. (в примере) значение можно писать в другой массив, используемый как источник данных для графика изменения значения контролируемого параметра во времени.

Идея ведь в том, что оператор на основании выводимых значений должен предпринимать некие действия, а цифры, меняющиеся с частотой N раз/сек, меняются быстрее, чем человек способен реагировать. Оператору в итоге придется полусознательно выполнять в голове вычисления, аналогичные приведенным выше. А если еще и будет меняться цвет ячеек, то вся композиция станет похожа на дикий винегрет, который быстро-быстро перемешивается.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36791939
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JohnSparrow, спасибо.

Очень много нареканий вызывает требуемая скорость обновления.

По ссылке на видео справа та скорость, которую я хочу получить. Мерцания нет, скорость навскидку раз 10 в секунду:

http://tfast.ru/?p=100#comments

Данные для отображения я получаю в виде datatable. То есть каждый раз приходит новая таблица, которую мне нужно отобразить полностью.
...
Рейтинг: 0 / 0
WPF какой компонент выбрать для отображения
    #36792607
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не будет никакого мерцания.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF какой компонент выбрать для отображения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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