Проблема производительности WPF из-за автоматизации пользовательского интерфейса - PullRequest
7 голосов
/ 19 апреля 2011

У меня возникла проблема, описанная в этой теме .

dotTrace сказал мне, что «Вход стилуса» был виновен.enter image description here

Я пытался код , отправленный Роном З и Хаимом Зонненбергом , но не работал.

Rash предложил 2 обходных пути:

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

  2. Если это невозможно, то альтернативой является то, что UIElementHelper.InvalidateAutomationAncestors займет больше времени, только еслиДерево автоматизации для приложения редкое (случается, если отключено дерево автоматизации здания с использованием настраиваемого однорангового окна автоматизации), и визуальное дерево плотно.Поэтому другое решение - отключить любой пользовательский код автоматизации и позволить WPF создать полное дерево автоматизации.Это должно ускорить UIElementHelper.InvalidateAutomationAncestors.

Но как закрыть вкладку?Я пытался остановить и отключить следующие службы, но не работал, tabtip.exe все еще работал в фоновом режиме:

  • Служба ввода планшетного ПК
  • TabletServicePen

Раш сказал, что эта проблема должна быть решена в .NET 4.0 SP1.Кто-нибудь знает дату выпуска .NET 4.0 SP1?

Я использую Visual Studio 2010, Windows 7 64bit, Wacom Graphire 4.

Спасибо


Обновление :

Чтобы закрыть tabtip.exe, мне просто нужно перезагрузить Windows после отключения вышеупомянутых служб.Но это само по себе не решило мою проблему.Чтобы обойти проблему с производительностью, я также должен отключить «Wacom Consumer Touch Service».

И в соответствии с этой веткой (22 марта 2011 г.):

there is no published timeline for .NET Framework 4.0 sp1

1 Ответ

0 голосов
/ 29 августа 2013

Недавно мне пришлось решить эту проблему, используя инструмент WPF в нашем проекте.

На машине, где происходил сбой, работает .NET Framework 4.5.

Когда инструмент ломался, мы могли видеть, что сбой происходил в .NET PresentationFramework UIAutomation. Исключением было следующее: Первое случайное исключение типа «System.ArgumentOutOfRangeException» произошло в PresentationFramework.dll -> в этот момент ошибка появилась в .NET Framework

Но затем мы могли видеть в стеке, что мы потерпели крах при вызове UIAutomation, что привело нас к этому потоку и показало, что этот модуль запускается службами Wacom.

Драйвер Wacom, работающий на компьютере, на котором происходит сбой приложения, был: Wacom Tablet 6.3.1w3 После перехода на предыдущую версию все заработало: WacomTablet_6.3.3-4

Теперь, когда мы знали источник проблемы, мы начали искать обходной путь, чтобы иметь возможность использовать последнюю версию драйвера. Итак, вот и хорошо, что это не влияет на функциональность планшета Wacom: - Перейти к панели управления. - Двойной щелчок по программам и функциям - Нажмите на ссылку слева под заголовком Включить или отключить функции Windows. - Когда он загрузится, снимите флажок «Компоненты планшетного ПК» (в Windows 7 может называться «Компоненты планшетного ПК»). - Нажмите кнопку ОК. Это может потребовать перезагрузки компьютера с Windows.

И это помогло нам.

Веселись!

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