Пользовательский интерфейс WPF вылетает только при отладке

#c# #.net #wpf #xaml #prism

#c# #.net #wpf #xaml #prism

Вопрос:

Если я перейду в Debug -> Start без отладки, мое приложение WPF будет работать нормально, но если я перейду в Debug -> Start Debugging, пользовательский интерфейс исчезнет, и это будет в окне вывода в разделе Debug:

Программа»[6744] UI.exe : Управляемый (v4.0.30319)’ завершился с кодом -1073740791 (0xc0000409)

Никаких исключений не генерируется или что-то еще. Почему это может произойти? Я использую библиотеку Prism, поэтому я не уверен, связано ли это с этим.

Я могу выполнять отладку без сбоев, если подключу отладчик к процессу вручную.

Комментарии:

1. Что происходит, когда вы выполняете Debug -> Запуск без отладки, а затем подключаетесь к процессу, который хотите отладить (Debug-> Присоединить к процессу или что-то в этом роде). Можете ли вы на самом деле выполнить отладку тогда?

2. У вас есть переполнение стека в соответствии с этим

3. @Skrymsli это, похоже, работает, чтобы разрешить отладку.

Ответ №1:

В моем случае у меня та же проблема. Когда я изменил «имя сборки» на, максимум 42 символа, мое приложение было построено…

Я думал, что это безумие, но работает.

Ответ №2:

Вероятно, при инициализации объекта возникает исключение, приводящее к повреждению кучи (stackoverflow или произвольное состояние нехватки памяти). В основном это вызвано методами P / Invoke или другим небезопасным кодом. Если вы не используете какой-либо небезопасный код, проверьте сторонние библиотеки, которые вы используете в качестве источника ошибки.

Ответ №3:

При использовании PRISM могут возникать некоторые ошибки, если какой-либо из контейнеров (заданный как region) содержит содержимое. В каждой области должны быть элементы управления пустым контейнером или элементы управления пустым элементом.

Prism имеет несколько разных конфигураций для режима отладки и выпуска, что может быть причиной. Попробуйте проанализировать построчно ваши файлы кода XAML, где у вас есть элементы управления regions, и проверьте, пусты ли теги. Лучший способ убедиться, что контейнеры пусты, — создать короткие версии тегов

например, попробуйте это

 <ContentControl />
  

вместо этого

 <ContentControl></ContentControl>
  

Ответ №4:

У меня похожая проблема в моем многопоточном приложении. Я пытался найти решение, но безуспешно. Если ваше приложение использует аналогичный вид многопоточности — проблема может быть в этом. Убедитесь, что ваш пользовательский интерфейс выполняется в одном потоке с основным потоком…

Комментарии:

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

Ответ №5:

Эта проблема может быть вызвана утилитой Microsoft EMET (Enhanced Mitigation Experience Toolkit) (http://support.microsoft.com/kb/2458544 ) если у вас установлен такой.

Проверьте журнал событий приложения на наличие ошибок типа «Имя приложения: UI.exe. EMET обнаружил смягчение EAF и закроет приложение: UI.exe «.

Если у вас есть такие ошибки — попробуйте настроить или просто удалить EMET 🙂

Ответ №6:

У меня была та же проблема, я изменил «Целевую платформу» с x86 на «Любой процессор», и это работает нормально. Но только для VS2010, не для VS2013