繁体   English   中英

WPF应用程序使用System.ObjectDisposedExceptions填充Windows事件日志

WPF Application Filling Windows Event Log With System.ObjectDisposedExceptions

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个正在生产的WPF应用程序,由于System.ObjectDisposedException,该应用程序正在用AppCrash错误填充Windows应用程序事件日志。 AppCrash专门指向我的应用程序SampleApplication.exe。 另外,该应用程序在无法连接到网络的系统上运行(因此没有远程调试的可能性),我很难找到问题所在。

我附加了两个事件处理程序,以捕获和记录所有未处理的异常。 这些适用于所有其他异常。 我不确定这些System.ObjectDisposedExceptions在进入事件日志之前如何被捕获,以及为什么应用程序实际上没有崩溃。 它保持运行正常。

以下是应用程序的异常事件处理程序以及将它们连接起来的App构造函数:

public App() : base()
{
    System.Windows.Application.Current.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(Current_DispatcherUnhandledException);
    AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
}

void Current_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
    Console.WriteLine(e.Exception.Message);
    Console.WriteLine(e.Exception.StackTrace);
    LogException(e.Exception);
    e.Handled = true;
}

void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
    if (unhandledExceptionEventArgs.ExceptionObject is Exception)
    {
        var e = (Exception)unhandledExceptionEventArgs.ExceptionObject;
        Console.WriteLine(e.Message);
        Console.WriteLine(e.StackTrace);
        LogException((Exception)unhandledExceptionEventArgs.ExceptionObject);
    }
}

void LogException(Exception e)
{
    Exception tmp = e;
    while (tmp.InnerException != null)
        tmp = tmp.InnerException;

    string errorMessage = string.Format("An unhandled exception occurred: {0}", tmp.Message);
    System.Windows.MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);

    EventLogService.AddLog(EventLogSourceTypes.Error, errorMessage, DateTime.UtcNow, e.StackTrace);
}

我不确定这些是否与我的问题相关,即:

如何捕获这些异常并记录详细信息,而不是填充Windows应用程序事件日志? 而且,该应用程序继续可以正常运行,因此尽管它们是AppCrash条目,但该应用程序实际上并未崩溃。

问题暂未有回复.您可以查看右边的相关问题.
1 如何导出Windows系统和应用程序事件日志?

使用EvtExportLog函数 ,当前无法为Path和/或Query参数指定正确的值。 我的目标是导出本地应用程序和系统事件日志。 我试过了: 具有以下P / Invoke定义: 不幸的是,该函数返回false和最后一个错误代码2( ERROR_FILE_NOT_F ...

2 填充Windows XP安全事件日志

我需要将Windows安全事件日志填充到接近满的状态。 由于无法对该日志进行写访问,因此,有人可以建议以编程方式执行的操作,该操作会在该日志中添加一个条目吗? 只要给出一个条目,它就没有任何意义(需要开销最小的条目,因为它需要执行数千次)。 纯粹出于测试目的,这是在测试平台上进行的,任 ...

4 记录到Windows应用程序事件日志

嗨,这基本上是我想在SQL Server Management Studio中执行的操作。 每当任何用户尝试删除或更新表中的数据时,都需要将其记录到Windows应用程序事件日志中。 有什么地方可以参考该怎么做? 我什么都找不到。 谢谢 完整问题: 由于“产品”表 ...

5 Windows 应用程序事件日志和 XFF

当 IIS 写入 Windows 应用程序事件日志时,它会添加“用户主机地址”(用户 IP 地址),但这在使用 XFF (X-Forwarded-For) 时没有帮助。 我已经搜索过但找不到在应用程序事件日志中包含“用户主机地址”时包含 XFF 的方法。 有没有办法做到这一点? ...

6 在一个查询中拉取应用程序和系统事件日志

我想用一个简单的查询来搜索事件日志,而不是经历两次相同的考验。 我只想在事件日志中搜索应用程序警告和错误以及系统日志。 我目前正在运行它,但如果可能的话,我想进行一个查询。 我更愿意做这样的事情,但不知道把它放进去的上下文。 ...

7 Windows CE 5.0及更高版本的系统事件日志

我正在调查WinCE上的.net应用程序崩溃之一。 该应用程序突然崩溃,并且没有引发异常。 我知道在桌面环境中有事件查看器,我们可以在其中了解有关错误代码或任何其他信息的信息。 我的问题是,Windows CE中有任何类似的机制可用吗? 谢谢,Omky ...

8 WPF应用程序引用System.Windows.Forms

我正在创建我的第一个WPF应用程序,我想了解在混合System.Windows.Forms命名空间的功能时是否存在某种最佳实践。 基本上我想在用户监视器的右下角默认打开一个弹出窗口。 我找不到WPF名称空间中的Screen.PrimaryScreen.Bounds等效项。 我见过的 ...

2009-03-30 11:07:11 2 2591   c#/ wpf
9 WPF - 从System.Windows.Application继承

我想拥有自己的继承自System.Windows.Application的应用程序类。 问题是在Application.xaml文件中,我必须像这样声明应用程序: 它在运行时运行良好,但是当我编辑项目属性时,我收到Visual Studio的项目属性编辑器的以下错误消息: 尝试加 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM