WinForms ElementHost замедляется при повторном использовании - PullRequest
1 голос
/ 21 апреля 2011

У меня есть сценарий, в котором использование WPF как части немодального диалога значительно превосходит альтернативы.Тем не менее, я вижу, что каждый раз, когда я открываю диалоговое окно, оно становится немного медленнее, пока, в конце концов, для его запуска не понадобится до 20 секунд.

Я профилировал его с помощью ANTS, и онв основном указывает на ElementHost в трех разных местах во время части InitializeComponent моей формы: создание хоста, установка цвета фона (который я могу исключить) и назначение дочернего элемента.

Пока это происходит на отдельномПоток пользовательского интерфейса из основного потока пользовательского интерфейса (выполняется путем создания потока, установки его квартиры в STA, а затем запуска другого Application.Run (myform) внутри), он по-прежнему блокирует основной графический интерфейс из-за его высокой занятости.

Если вы закроете приложение и начнете сначала, проблема исчезнет, ​​и некоторое время она снова будет работать очень хорошо.Кажется, что никакая другая часть кода не тормозит.

Могу ли я что-то сделать, чтобы очистить после ElementHost?

1 Ответ

1 голос
/ 22 апреля 2011

Я узнал что, но не почему.

Я должен вручную избавиться от ElementHost при удалении формы, в противном случае он оставляет элементы WPF без изменений.Они со временем накапливаются и замедляются.

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