Аргумент с очередью остается.Что я делаю - это помещаю вещи в очередь, очередь запускает задачу, которая затем запускается в потоке обмена сообщениями и извлекает X элементов данных (1000 или их сколько).Единственное, что меня убило, это постоянное обращение к одному элементу (что происходит медленно), но выполнение этого пакета хорошо работает.Я могу поддерживать почти нулевую загрузку процессора на очень загруженном потоке данных ES в безумные времена и время.
У меня есть специальный набор компонентов для этого, который я открою с исходным кодом на следующей неделе иесть ActionQueue (делегат для вызова, когда элементы нуждаются в обработке).Теперь это задача (ранее был рабочим элементом в очереди).Я потратил время на обработку до 1000 сообщений за вызов - но если вы сделаете ценовую сетку, вам может потребоваться больше.
Примечание: используйте подсказки WPF для включения кэширования gpu отображаемых растровых изображений.
В дополнение:
- Запускать каждое окно в своем собственном потоке / насосе сообщений
- ТЯЖЕЛО использовать асинхронные очереди.Издатель никогда не должен блокировать, каждое окно имеет свою собственную целевую очередь, которая является асинхронной.
Вы хотите, чтобы обработка была максимально отделена.Жестоко отделен.