В приложении WinForms у меня есть сетка данных, связанная с источником данных.Когда данные поступают через фоновый поток, набор данных необходимо обновить, что, в свою очередь, автоматически обновляет сетку данных.Теперь обновления могут быть в порядке, скажем, 7000 обновлений в 20 секунд.Проблема в том, что пользовательский интерфейс зависает, когда такое обновление происходит, потому что оно должно происходить в основном потокеЕсть ли известное решение этой проблемы?
Как вообще можно создавать высокопроизводительные корпоративные приложения в WinForms, где пользовательский интерфейс постоянно обновляется без зависания приложения?
ДобавлениеСценарий, чтобы объяснить это:
Рассмотрим этот сценарий.У вас есть древовидное представление, которое вы используете для представления некоторых иерархических данных.Теперь обновление данных на дереве асинхронно.Сервер может публиковать одно или 1000 обновлений одновременно.Обновление может быть модификацией существующего элемента или добавлением новых узлов.Следует отметить, что обновление не может быть отложено.Узлы где-то представляют сущность реального времени. Задержка обновления даст пользователю представление о том, что само событие было отложено. Так что это невозможно сделать.Если бы это было возможно (с точки зрения бизнес-логики), я бы сделал это очень давно.
Здесь есть ключевой момент: все данные не должны быть видны одновременно.
Чтобы люди больше этого не предлагали:
Добавление фонового рабочего потока НЕ ПОМОЖЕТ, потому что поток должен переключиться на основной поток, чтобы выполнить обновление.Рабочий поток не будет иметь никакого значения.