C# 自动重新启动已崩溃的WPF应用程序

C# 自动重新启动已崩溃的WPF应用程序,c#,wpf,exception,xaml,exception-handling,C#,Wpf,Exception,Xaml,Exception Handling,我需要在WPF崩溃时自动重新启动它。我现在尝试了一些方法,但我的应用程序仍然崩溃,没有捕捉到错误。 第二个问题是我不知道它为什么会崩溃。我不知道例外,VS没有告诉我。只是vshost32.exe已停止工作。我所知道的是,如果我在一个MediaElement中的一小段时间内加载了许多不同的文件,就会发生这种情况。可能是溢出异常或什么的 这是我的密码。它位于App.xaml中,并且已删除xaml中的StartupUri private void Application_Startup(obj

我需要在WPF崩溃时自动重新启动它。我现在尝试了一些方法,但我的应用程序仍然崩溃,没有捕捉到错误。 第二个问题是我不知道它为什么会崩溃。我不知道例外,VS没有告诉我。只是vshost32.exe已停止工作。我所知道的是,如果我在一个MediaElement中的一小段时间内加载了许多不同的文件,就会发生这种情况。可能是溢出异常或什么的

这是我的密码。它位于App.xaml中,并且已删除xaml中的StartupUri

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        AppDomain currentDomain = AppDomain.CurrentDomain;
        currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

        try
        {
            MainWindow m = new MainWindow();
            m.Show();
        }
        catch (Exception)
        {
            MessageBox.Show("test");
        }
    }

    static void MyHandler(object sender, UnhandledExceptionEventArgs args)
    {
        Exception e = (Exception)args.ExceptionObject;
        MessageBox.Show("MyHandler caught : " + e.Message);
    }

    private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
    {
        MessageBox.Show("test");
    }
编辑// 在windows的错误日志中发现异常: 大致翻译如下:

Anwendung:newKnoblauch.exe Frameworkversion:v4.0.30319说明:由于未处理的异常,进程已停止。例外信息:例外代码c0000005,例外服装55542ECC

名称der fehlerhaften Anwendung:newKnoblauch.exe,版本:1.0.0.0,时间:0x4d62e0a6 模块名称:wmp.dll,版本:12.0.7600.16667,时间:0x4c7dd593 例外代码:0xc0000005 错误偏移量:0x00182ecc
ID des fehlerhaften Prozesses:0xa98我不确定是什么导致了此崩溃,但由于.Net 2,无法捕获StackOverflowException。参考:

OutOfMemoryException也会导致不可预测的行为。
这些都是你无法真正计划的严重异常。修复导致它们的错误并继续前进:

我不确定是什么导致了这次崩溃,但是自从.Net 2以来,StackOverflowException无法被捕获。参考:

OutOfMemoryException也会导致不可预测的行为。
这些都是你无法真正计划的严重异常。修复导致它们的错误并继续前进:

为了实现自动重启,您需要将原始可执行文件用作CLR主机,并将目标WPF应用程序加载到新的AppDomain中。当该AppDomain意外退出时,您可以重复该过程并在另一个新AppDomain中重新启动WPF应用程序。

为了实现自动重新启动,您需要将原始可执行文件用作CLR主机,并在新AppDomain中加载目标WPF应用程序。当该AppDomain意外退出时,您可以重复此过程并在另一个新AppDomain中重新启动WPF应用程序。

请查看此中的答案。对我来说根本不起作用。。即使抛出新的异常;它不会重新启动检查这里面的答案对我来说根本不起作用。。即使抛出新的异常;它没有重新启动,但发现了异常。检查第一篇文章,因为注释中的代码无法找到异常。检查第一篇文章,因为注释中的代码很糟糕