0

非常简单的 WPF 应用程序,当从调试器启动时,Debug 和 Release 构建都会运行。
当我尝试从命令行启动其中一个 .exe 时,它​​会崩溃。
在生成发送到 MS 的 xml 文件中,我发现:
<ProblemSignatures> <EventType>APPCRASH</EventType> <Parameter0>App.exe</Parameter0> <Parameter1>0.2.0.0</Parameter1> <Parameter2>5260abb5</Parameter2> <Parameter3>KERNELBASE.dll</Parameter3> <Parameter4>6.1.7601.18229</Parameter4> <Parameter5>51fb1677</Parameter5> <Parameter6>e0434352</Parameter6> <Parameter7>000000000000940d</Parameter7> </ProblemSignatures>
我已向 AppDomain.CurrentDomain.UnhandledException 添加了一个处理程序,但它似乎没有捕获任何东西。
我会很感激任何关于可能出现问题的想法......不正确地处理资源,例如应用程序使用的一些 .png 文件?
从注册表读取值有问题吗?

TIA——

4

1 回答 1

0

当你说你的AppDomain.CurrentDomain.UnhandledException事件处理程序没有捕获任何东西时,你是在说你调试的时候吗?如果是这样,那很好......在该处理程序中添加一些代码,将Exception(和任何内部Exceptions)的详细信息保存到文本文件中。现在构建一个新的 Release 版本并运行它。这样,您至少应该了解问题的详细信息。

如果由于任何原因不起作用,那么您的问题必须在构造函数中的某个地方MainWindow.cs,或者在从构造函数调用的代码中,或者 WPF 框架可能在启动时调用的任何代码中。因此,如果您仔细查看启动代码,您可能能够识别任何可能导致问题的代码行。

这方面的例子是任何访问资源的代码,特别是数据库和网络驱动器,或者任何其他可能离线或用户可能无权访问的代码。当您检测到这些代码行时,只需添加大量调用即可MessageBox.Show向您显示当前值是什么:

MessageBox.Show("Debugging", string.Format("Model: ", Model.ToString()));
MessageBox.Show("Debugging", string.Format("User: ", User.ToString()));
MessageBox.Show("Debugging", string.Format("User.Security: ", User.Security.ToString()));
于 2013-10-18T08:39:41.837 回答