WPF自定义弹出窗口导致程序崩溃?

时间:2012-12-05 15:50:48

标签: c# wpf .net-4.0

我有一个程序,它位于任务栏中(通过隐藏的表单),它会生成一个弹出窗口(自定义构建的wpf窗口类),显示启动是否完全成功。此程序设置为在启动时运行(因为实际产品将运行),当我启动计算机并启动程序时,程序将停止响应。我不确定这是否是由于它开始打开第二个窗口(实际的用户界面)或者计算机一次发生太多事件引起的。关于导致这种情况的任何想法?

2 个答案:

答案 0 :(得分:1)

根据我的经验,WPF应用程序可能因各种原因而崩溃,因此您可以解决WPF应用程序启动时出现的问题。

首先确保您的应用程序具有正确的异常处理:在每个入口点尝试/ catch,在您的情况下 - 在应用程序的第一个可能位置附加未处理的异常事件侦听器:

 AppDomain.CurrentDomain.UnhandledException += (s,args)=>{
       MessageBox.Show("Unhandled Exception: "+args.ExceptionObject);
    };

然后确保您的应用在直接执行时正确运行

WPF应用程序有一个模糊的启动,它们的Main()方法在生成的部分类obj \ App.g.cs中,此类的另一部分是空的App.xaml.cs 如果您遇到反序列化BAML的问题,您甚至不会看到您的MainWindow.xaml.cs代码执行。在这种情况下你需要做的是将obj \ App.g.cs的内容复制到一个新的Program.cs类中,将它作为你的应用程序的启动类,并将上面提到的错误处理程序作为第一行。您在Program.cs中复制的Main()方法:

[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks","4.0.0.0")]
public static void Main() {
    AppDomain.CurrentDomain.UnhandledException += (s,args)=>{
       MessageBox.Show("Unhandled Exception: "+args.ExceptionObject);
    };
    Storm.Designer.App app = new Storm.Designer.App();
    app.InitializeComponent();
    app.Run();
}

答案 1 :(得分:0)

也许你的应用程序依赖于某些服务,在加载wpf app后加载??? 您可以使用任务计划程序启动wpf应用程序,您可以在其中设置下一个有用的参数: 在启动时, 延迟任务x分钟, 重启应用程序,如果它崩溃, 等