保持理想模式一段时间后,WPF应用程序进入无响应状态

时间:2018-10-16 09:33:47

标签: c# .net wpf

我们已经为其中一位客户实现了一个WPF应用程序。 它是在.NET Framework 4.5和vs 2015中实现的。 客户确定了一个主要问题。那是如果他停止使用应用程序一段时间,后来又在同一情况下继续使用该应用程序则不负责任。 我们无法找到根本原因。

能否请您帮助我们前进。

Attachment

1 个答案:

答案 0 :(得分:0)

正如@Tobias Moe评论,这可能是内存泄漏问题。但是,您的应用程序似乎无法处理所有异常,因此会导致崩溃。

处理 Application.DispatcherUnhandledException 事件以处理未处理的异常。当应用程序抛出异常但未对其进行处理时,会发生此异常。 MSDN

在您的App.xaml中放置 DispatcherUnhandledException 事件;

<Application x:Class="Travelport.UniversalDesktop.Shell.App" 
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:compui="http://schemas.travelport.com/CompositeUI"
         ShutdownMode="OnExplicitShutdown"
         xmlns:SRD="clr-namespace:Travelport.UniversalDesktop.Common.Controls.Helpers;assembly=Travelport.UniversalDesktop.Common.Controls" 
         DispatcherUnhandledException="Application_DispatcherUnhandledException">

在其中放置的App.xaml.cs中,它应该捕获任何未处理的UI线程错误:

private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {   
        new MessageBoxService().Show(e.Exception.StackTrace, e.Exception.Message);
        if (System.Diagnostics.Debugger.IsAttached)
        {
            System.Diagnostics.Debugger.Break();
        }

        e.Handled = true; 
    }

这将从自定义线程中捕获所有未处理的错误:

在App.xaml.cs中覆盖OnStartup并添加以下行:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);

SOURCE