GUI не отвечает при обновлении сетки, содержащей 80 столбцов во время интенсивного обновления - PullRequest
0 голосов
/ 23 июня 2011

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

Позвольте мне прояснить это, существует ультрасетка (сторонняя сетка) с 80 столбцамиу нас есть около 40 строк с одинаковым уровнем безопасности, которые необходимо обновлять, когда и когда происходит колебание рыночных данных.Мы в состоянии обрабатывать рыночные частоты 10 сообщений / сек / безопасность.Но кроме этого мы не можем справиться.GUI перестает отвечать на запросы при увеличении частоты до 25-30 мсг / сек / сек.Мы следовали передовым методам при разработке и реализации, но все же не можем справиться с высокой частотой.Мы выполняем всю работу, не связанную с графическим интерфейсом, на рабочих / фоновых потоках, но все еще сталкиваемся с зависанием графического интерфейса.Пожалуйста, помогите предложить мне любое из готовых решений для решения этой проблемы.Здесь я не могу поставить фрагмент кода по соображениям безопасности.

Ответы [ 2 ]

0 голосов
/ 01 октября 2013

Ключевым моментом здесь является виртуализация всего - единственное взаимодействие между вашей моделью данных и сеткой должно происходить, когда нужно нарисовать соответствующие ячейки.Для этого вам нужно использовать сетку, поддерживающую этот тип виртуализации (я использовал сетку Syncfusion, чтобы сделать это раньше, см. Пример здесь ).

Вы будететакже хотите пакетировать обновления для вашей модели данных, чтобы не слишком часто блокировать поток GUI.Посмотрите на этот вопрос и ответ .

0 голосов
/ 23 июня 2011

Переключите ваш компонент сетки на что-то, что может удвоить буфер и многопоточность (я ожидаю, что большинство данных будут оставаться статичными при обновлениях), или свернуть ваши собственные. Скручивание собственных звуков неизбежно: этот вид активного обновления не является наиболее распространенным вариантом использования элементов управления сеткой. Я бы начал искать элементы управления сеткой с открытым исходным кодом, который вы можете изменить, например, на. http://www.codeproject.com или http://www.codeplex.com. Что выбрать, увы, зависит от ваших других требований.

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