У нас есть старая (Win32) и новая (WPF) версия нашего программного обеспечения для блоттера, которое трейдеры в настоящее время работают бок о бок.Однако запуск приложения WPF часто сильно замедляет скорость перерисовки приложения Win32.
Если приложение WPF не запущено (или свернуто), скорость отрисовки в приложении Win32 плавная и быстрая.С открытым приложением WPF скорость отрисовки пользовательского интерфейса приложения Win32 заметно замедляется.Запуск приложения WPF, по-видимому, инициирует использование некоторых ресурсов, которые отнимаются у приложения Win32 (оба графических), вызывая замедление, которое кажется.
Процессор и память практически не насыщены, поэтомупохоже, это не связано с этим.Снижение разрешения и / или уменьшение количества отображаемых мониторов (следовательно, уменьшение использования памяти видеокарты и загрузки полосы пропускания) не делает заметных различий, поэтому, похоже, это не является проблемой производительности графического оборудования.
Одна из гипотез, которая может объяснить причину, заключается в следующем:
Под капотом мы знаем, что и приложения WPF, и Win32 выводят графическую информацию в «насос сообщений» Windows, который в основном представляет собой очередь инструкций о том, чторисовать на экране.Кажется, что когда приложение WPF не запущено, Win32 имеет полный беспрепятственный доступ к нему, и обновления экрана текучие.Одновременно с этим приложение WPF помещает дополнительные сообщения в эту очередь, поэтому приложению Win32 приходится конкурировать за доступ к нему (для каждого обновления элемента экрана), поэтому «забивая насос», что дает видимый эффект.
Если вышеизложенное имеет место, может ли кто-нибудь порекомендовать подходы к управлению / управлению насосом оконных сообщений, чтобы предотвратить это?
Мерцание - это тип, который вы обычно получаете, когда ресурсы заканчиваются, где выможет видеть, как отдельные элементы (формы, метки) мерцают и постепенно рисуют на экране.
Если у кого-либо есть какие-либо предложения / идеи, сообщите нам.