C#WPF App最终崩溃了

时间:2010-11-23 16:06:28

标签: c# wpf visual-studio-2010

我有一个简单的程序。它的工作是将文件从A移动到B(诚实地说是一个美化的蝙蝠文件)。

我遇到的问题是它最终会崩溃。

App.xaml.cs:

<Application x:Class="app.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             xmlns:properties="clr-namespace:app.Properties" 
             StartupUri="Views\MainWindow.xaml">
    <Application.Resources>
        <properties:Settings x:Key="Settings" />
    </Application.Resources>
</Application>

App.CS:

using System.ComponentModel;
using System.Linq;
using System.Windows;
using app.Model;
using app.Properties;
using app.Views;

namespace app
{
    public partial class App
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            string xmlDoc = Settings.Default.Config;
            var parms = new MoveFilesParams(xmlDoc);
            Process.MoveFiles(parms);
        }
    }
}

简单的身体。假设我没有传递命令行参数,它应该只是自动运行。使用参数,它将运行WPF。

它从应用程序设置中填充的xmlDoc中提取设置。然后它通过Parms类传递这些设置。然后它运行或popu

运行时,我在OnStartup中尝试了一个没有错误的try / catch - 它在带有NullReferenceException的OnStarup块之后出错。

编辑1:对不起,如果我的反应速度不够快(不耐烦,因为他们不耐烦而不耐烦的人),但我已经删除了后台工作人员部分,因为我现在没有使用它。我最后仍然得到相同的Null错误。此处更新了代码以反映BackgroundWorker的删除。

编辑2:删除了App.cs的GUI方面(因为后台工作者和gui是次要的atm)。所以这个程序,就像现在一样,只是

  • 负载
  • 从app.config
  • 中提取xml位置
  • 从XmlDoc
  • 加载parm类
  • 成功移动文件
  • 使用NullReferenceException崩溃时出现未处理错误。我可以在OnStart“完成”
  • 上注释掉所有内容和错误

2 个答案:

答案 0 :(得分:1)

如果您的主线程在后台任务完成之前退出,并且BackgroundWorker创建了background thread(我认为确实如此,但不是100%确定),那么当您的UI线程退出后台线程时将关闭积极地下来。

尝试保持主线程运行,直到您确定BackgroundWorker已完成,并查看它是否仍然崩溃。如果没有,那么你就发现了问题。

答案 1 :(得分:0)

WPF Command Line

我使用过这个问题(或者一个非常相似的问题)来设置我的WPF命令行。当我重建应用程序并且没有删除

时,必定会出现此问题
StartupUri="Views\MainWindow.xaml"

这意味着在进程运行后,它会尝试访问未初始化的对象,从而产生null异常错误。

至少我确定这就是问题所在。删除StartupUri会删除该问题(虽然现在我有另一个错误,我可能会发布一个新问题)。