-1

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

4

2 回答 2

1

根据我的经验,WPF 应用程序可能会因各种您无法预料的原因而崩溃,因此这里是如何解决 WPF 应用程序启动问题的方法。

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

 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();
}
于 2012-12-05T16:09:15.513 回答
0

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

于 2012-12-05T16:09:26.047 回答