Приложение WPF останавливается / зависает после первого взаимодействия, например, при нажатии кнопки

В настоящее время у меня проблема с WPF. Пользовательский интерфейс загружается нормально, но всякий раз, когда выполняется первое взаимодействие с пользователем, такое как нажатие кнопки, кажется, что приложение останавливается, или, например, если у меня было две кнопки, отображающие MessageBox, первый щелчок будет ждать несколько секунд, а затем отобразит MessageBox, но любое последующее взаимодействие происходит мгновенно и быстро.

Кто-нибудь еще испытал это? И если да, то есть ли какое-то решение?

Спасибо


person Gary Connell    schedule 14.10.2012    source источник
comment
Если вы показываете окно сообщения, используя версию перегрузки с параметром this refrence, это не позволит вам ничего делать, пока вы не закроете окно сообщения.   -  person    schedule 15.10.2012
comment
Я предполагаю, что это из-за загрузки DLL, поскольку .NET загружает только то, на что ссылаются, поэтому, когда возникает первая ссылка на какой-либо объект, это может вызвать задержку. Вот что происходит ...   -  person Mohsen Afshin    schedule 15.10.2012
comment
Это может вам помочь, stackoverflow.com/questions/2947118/   -  person Mohsen Afshin    schedule 15.10.2012
comment
Я думаю, что разобрался, кажется, что он работает медленно только при отладке. Если я встраиваю выпуск и запускаю приложение из папки выпуска в каталоге bin, остановки или задержки не происходит. Все равно, спасибо за помощь :)   -  person Gary Connell    schedule 15.10.2012
comment
Я заметил такое же поведение, но только в 64-битных сборках (или AnyCPU в 64-битной ОС) во время отладки. Сборки отладки запускаются без задержки, если они запускаются из каталога Bin\Debug. Задержка присутствует только тогда, когда программа запускается с F5 в IDE.   -  person John Reynolds    schedule 08.04.2013


Ответы (2)


У меня такая же проблема. Каждый раз, когда я вызывал первое взаимодействие с Button или ICommand, пользовательский интерфейс зависал примерно на полсекунды.

Я отследил проблему с подсказкой автора запустить приложение прямо из папки. Это решило проблему, но я также хотел знать, почему это происходит, и подумал, в чем разница между прямым выполнением и отладкой.

Итак, я понял, что IntelliTrace вызывает зависание, которое все еще было включено, поскольку я активировал его один раз для отладки приложения ADO.NET. После отключения UI Freeze исчезнет. Чтобы отключить его, перейдите в «Отладка» -> «IntelliTrace» -> «Открыть настройки IntelliTrace» -> снимите флажок «Включить IntelliTrace».

person JanW    schedule 07.08.2013
comment
Мы исследуем эту проблему, чтобы увидеть, можно ли ее решить в будущей версии Visual Studio. А пока вы можете просто отключить события «Жесты» вместо того, чтобы полностью отключать IntelliTrace. Для этого перейдите в «Инструменты-› Параметры- ›IntelliTrace-› IntelliTrace Events »и отключите сбор« Жесты ». - person Colin Thomsen; 27.08.2013
comment
Спасибо за ответ, Колин. Я выполнил ваши инструкции, и теперь, похоже, он работает с включенной IntelliTrace. Возможно, вам также стоит опубликовать это в качестве ответа, поскольку оно действительно лучше, чем мое решение. - person JanW; 02.09.2013

Благодарим за сообщение об этой проблеме с производительностью. Мы изучили это и выследили. Мы планируем исправить это в следующем выпуске. Ниже приведены шаги по решению этой проблемы. После применения обходного решения нет необходимости отключать события «Жесты» или IntelliTrace.

  1. Откройте окно cmd под учетной записью администратора
  2. cd / d "% programfiles (x86)% \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Remote Debugger \ x64"
  3. % windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ngen.exe install / NoDependencies /ExeConfig:.\msvsmon.exe Microsoft.VisualStudio.vil.host.dll

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

Азим Хан

person Azeem Khan    schedule 06.01.2014