C# 记录致命异常

C# 记录致命异常,c#,.net,wpf,exception,C#,.net,Wpf,Exception,当我的应用程序崩溃时,我试图记录一个异常。尽管偶尔会捕捉到大多数异常,但我的应用程序还是会崩溃。我真的不知道如何将异常记录到文本文件中。无论我尝试什么似乎都不起作用。我不确定我做错了什么,如果有人能给我指出正确的方向,我将不胜感激 这就是我的代码目前的样子。我使用的是多线程环境 public MainWindow() { AppDomain currentDomain = AppDomain.CurrentDomain;

当我的应用程序崩溃时,我试图记录一个异常。尽管偶尔会捕捉到大多数异常,但我的应用程序还是会崩溃。我真的不知道如何将异常记录到文本文件中。无论我尝试什么似乎都不起作用。我不确定我做错了什么,如果有人能给我指出正确的方向,我将不胜感激

这就是我的代码目前的样子。我使用的是多线程环境

        public MainWindow()
        {
            AppDomain currentDomain = AppDomain.CurrentDomain;
            currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
            InitializeComponent();          
        }

        static void MyHandler(object sender, UnhandledExceptionEventArgs args)
        {
            Exception e = (Exception)args.ExceptionObject;
            using (StreamWriter writer = File.AppendText("ExceptionsLog.txt"))
            {
                DateTime time = DateTime.Now;
                writer.WriteLine("Time {0} Exception: {1} Runtime termination: {2}", time, e.Message, args.IsTerminating);
            }
        }

首先,确保刷新您的
StreamWriter

其次,
AppDomain.CurrentDomain.UnhandledException
可能没有报告其他异常

  • 如果您正在使用任务,它们可能会引发
    TaskScheduler.UnobservedTaskException
    事件

  • 如果您正在使用WPF,您可能还希望处理允许防止进程崩溃的
    Application.Current.dispatchernhandledexception
    事件

  • 如果您使用多个应用程序域,则当前域不会处理其中的异常


我觉得这很合适。什么不起作用?该方法没有被调用吗?还是不管用?(旁注:我建议将整个异常写入日志文件,而不仅仅是消息。因此将“e.message”更改为“e”)文本文件可能是空的。我只是得到一个通常的消息框,应用程序已经停止工作,但没有日志:/如果你在MyHandler中设置了一个断点,它会到达那里吗?你能看看会发生什么吗?也许试着让StreamWriter自动刷新。