WPF用户界面仅在调试时崩溃。

5
如果我点击“调试 -> 无调试启动”我的WPF应用程序可以正常运行,但如果我点击“调试 -> 启动调试”,则UI将消失,并在调试的输出窗口中显示以下内容:

The program '[6744] UI.exe: Managed (v4.0.30319)' has exited with code -1073740791 (0xc0000409)

没有任何异常被抛出。这种情况可能是什么原因?我正在使用Prism库,不确定是否与此有关。
如果我手动将调试器附加到进程上,则能够进行调试而不会崩溃。

1
当您执行“调试”->“开始调试”然后附加到要调试的进程(调试->附加到进程或类似操作)时会发生什么?那么您是否可以进行调试呢? - Skrymsli
2
根据此链接,您遇到了堆栈溢出问题。 - jfs
@Skrymsli,这似乎可以允许调试。 - user404068
6个回答

1
在我的情况下,我有同样的问题。当我将“程序集名称”更改为最多42个字符时,我的应用程序被构建了...
我觉得这很疯狂,但是有效。

0

如果您正在使用PRISM,如果任何容器(设置为区域)具有内容,则可能会出现一些错误。每个区域必须是空的容器控件或空的项控件。

Prism有几种不同的调试和发布模式配置,这可能是原因。尝试逐行分析您的XAML代码文件,其中包含区域控件,并检查标记是否为空。确保容器为空的最好方法是创建短标记版本

例如,请尝试此操作

<ContentControl />

用这个代替

<ContentControl></ContentControl>

0

在对象初始化期间,您可能会遇到堆损坏异常(stackoverflow或任意的内存不足条件)。这主要是由于P/Invoke方法或其他不安全的代码引起的。如果您没有使用任何不安全的代码,请检查您正在使用的第三方库是否是错误的来源。


0

这个问题可能是由于安装了 Microsoft EMET(增强型缓解体验工具包)实用程序(http://support.microsoft.com/kb/2458544)引起的。

检查应用程序事件日志,查看是否有类似于“应用程序名称:UI.exe。EMET检测到EAF缓解措施并将关闭应用程序:UI.exe”的错误。

如果出现此类错误,请尝试配置或卸载EMET :-)


0

我曾经遇到同样的问题,将“Platform target”从x86改为“Any CPU”,问题就解决了。但是只对VS2010有效,对于VS2013无效。


0

我在我的多线程应用程序中遇到了类似的问题。我一直在尝试找到解决方案,但没有成功。如果您的应用程序使用某种形式的多线程,则可能存在问题。请检查您的UI是否在与主线程相同的线程中运行...


这更像是一条评论而不是答案,可能对除了OP以外的任何人都没有帮助。也许如果您扩展这个想法来演示它或提供确认或排除此问题的方法会更好。 - Conrad Frix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接