C# 如何捕获WPF程序中的所有异常,以便TextWriterTraceListener在崩溃之前将其写入日志

C# 如何捕获WPF程序中的所有异常,以便TextWriterTraceListener在崩溃之前将其写入日志,c#,.net,wpf,vb.net,C#,.net,Wpf,Vb.net,我有一个非常普通的WPF程序(在VB.net中,但与C#相同),并实现了TextWriterTraceListener,它将所有内容写入日志文件。我的问题是,如果有一个异常是未破坏的,那么我的应用程序崩溃,日志文件似乎“落后”,所以它不会显示崩溃前的最后一个条目 我是否可以让TextWriterTraceListener更快地写入日志文件 我已经实现了应用程序\u DispatcherUnhandledException,但这似乎没有捕获我未处理的错误 我知道在正确关闭时,我必须调用flush并

我有一个非常普通的WPF程序(在VB.net中,但与C#相同),并实现了TextWriterTraceListener,它将所有内容写入日志文件。我的问题是,如果有一个异常是未破坏的,那么我的应用程序崩溃,日志文件似乎“落后”,所以它不会显示崩溃前的最后一个条目

  • 我是否可以让TextWriterTraceListener更快地写入日志文件

  • 我已经实现了应用程序\u DispatcherUnhandledException,但这似乎没有捕获我未处理的错误

  • 我知道在正确关闭时,我必须调用flush并关闭TextWriterTraceListener对象,问题是如果我的应用程序崩溃,我没有机会这样做。

    您是否尝试添加

    AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
    

    以及您的
    应用程序\u DispatcherUnandredException

    谢谢。这工作正常,从VisualStudio运行时会捕获异常。但是,在编译的.exe上,此事件不会捕获异常,我也有同样的问题,日志文件只完成了一半。是未捕获的特定异常还是任何异常?您使用多线程吗?你说它在Visual Studio中工作正常-然后你是否在VS运行的完全相同的编译的.exe上测试它?我不知道我做了什么,但在测试中我认为我已经修复了它。只是为了让我的经验与您的专业知识相匹配—UnhandledException—似乎可以捕获非UI线程上的异常,而DispatcherUnhandledException似乎可以捕获WPF UI线程上的异常?应该是这样的吗?很高兴它现在起作用了。我们的代码是几年前开发的,我知道它给我们带来了一些麻烦。您对UI线程和非UI线程的不同处理程序的思考似乎是合理的。