Что происходит в приложении WPF после выполнения моего кода в конструкторе главного окна? - PullRequest
0 голосов
/ 29 марта 2010

Мне интересно, что произойдет после того, как конструктор выполнит мой код, потому что для запуска холодного запуска у конструктора требуется около 10 секунд, но, согласно профилировщику, мой код выполняется за 2 секунды.

Также пошагово просматривая код в отладчике, после последней строки моего конструктора я сижу там и жду 7-8 секунд, прежде чем появится окно. Почему это?

Если окно загружает контент или что-то еще, почему оно не отображается на экране, не загружено или нет после того, как конструктор завершил свою работу? Что задержать? (или как мне это выяснить)

1 Ответ

1 голос
/ 30 марта 2010

Как только ваш конструктор запустился, он собрал все элементы интерфейса, необходимые для окна. Однако для этого еще нужно сделать несколько вещей:

  • Выполните этап измерения и компоновки, чтобы расположить элементы пользовательского интерфейса в нужном месте
  • Разрешить любые привязанные к данным значения
  • Загрузка, декодирование и изменение размера изображений в окне
  • Выполнить фактический рендеринг

Если бы ваша проблема была в потоке рендеринга (включая загрузку изображений), вы бы увидели не отвечающее окно "оболочку", а не окно вообще, поэтому я не думаю, что проблема есть. Мне кажется, что наличие чего-то занимает много времени для получения значения привязки данных или просто сложного макета.

Еще одна вещь, которую нужно проверить, это проверить, не зависает ли ваш ЦП или сильно ли вы бьете по диску в течение этих 7-8 секунд. Может дать вам несколько подсказок о том, где искать.

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