2010-08-20 4 views
3

В настоящее время я разрабатываю приложение WPF, которое будет использовать существующие диалоги WinForm. Я испытываю длинную задержку между моментом, когда я вызываю ShowDialog() на WinForm до момента его отображения.Проблемы с производительностью при отображении диалога WinForm из приложения WPF

Даже при повторном использовании диалоговых объектов WinForm время задержки почти так же плохо при втором ударе. Это означает, что проблема не в конструкторе.

Есть ли у кого-нибудь работа, чтобы увеличить скорость или узнать, почему скорость настолько медленная?

+0

Сколько времени он в этом состоянии? Что он делает в обработчике события Load? –

+0

Оба этих диапазона зависят от того, какой диалог используется. Длительное время около 3 секунд с пустым диалогом. В реальном примере около 8 секунд, где if побежал из приложения WinForms, менее чем за 2 секунды для первоначального попадания, а затем сразу для последующих секвенциальных дисплеев. –

ответ

0

Быстрый тест с пустым WPF-приложением и пустой диалог формы на моей машине указывает на то, что самая большая задержка происходит из анимации «открытого окна», которую выполняет Win7. Поэтому я считаю, что в WPF-Forms interop нет встроенной проблемы с производительностью. Скорее всего, нам, вероятно, не хватает важной детали реализации вашего диалога.

  • Как вы это делаете в Load и FormShown событиях? Возможно, вы используете наследование, а код нарушения далее находится в иерархии?
  • Вы используете сторонний комплект компонентов? Они, как правило, немного инициализируются при запуске.

Ваш лучший выбор - вероятно, использовать профилировщик, чтобы узнать, где на самом деле потрачено время.

Смежные вопросы