C# 事件日志性能

C# 事件日志性能,c#,C#,我有一些代码,可以读取eventviewer中所有路径的错误。使用下面的代码,一切正常 foreach (var log in EventLog.GetEventLogs(Environment.MachineName)) { log.Entries .Cast<EventLogEntry>() .Where(x => x.EntryType == Event

我有一些代码,可以读取eventviewer中所有路径的错误。使用下面的代码,一切正常

        foreach (var log in EventLog.GetEventLogs(Environment.MachineName))
        {
            log.Entries
                .Cast<EventLogEntry>()
                .Where(x => x.EntryType == EventLogEntryType.Error && x.TimeWritten > DateTime.Now.AddHours(-1))
                .ToList()
                .ForEach(x =>
                {
                    list.Add(new LogEntry(x, log.LogDisplayName, ItemStatus.Error));
                });
        }  
foreach(EventLog.GetEventLogs(Environment.MachineName)中的变量日志)
{
日志条目
.Cast()
.Where(x=>x.EntryType==EventLogEntryType.Error&&x.TimeWrite>DateTime.Now.AddHours(-1))
托利斯先生()
.ForEach(x=>
{
添加(新的日志条目(x,log.LogDisplayName,ItemStatus.Error));
});
}  
这通常需要不到两秒钟的时间。
现在我的问题是,当我使用另一台机器而不是
Environment.MachineName
,这个过程需要5-20分钟

有没有办法加快速度

谢谢


避免使用LINQ对我的结果没有太大影响。

好的,经过一些研究,我找到了解决办法。MSDN上有一个很好的解释/示例

当使用旧代码等待5-20分钟时,此代码在10秒内完成


我希望这对任何人都有帮助。

好的,经过一些研究,我找到了解决方案。MSDN上有一个很好的解释/示例

当使用旧代码等待5-20分钟时,此代码在10秒内完成


我希望这对任何人都有帮助。

好吧,如果它工作正常,你需要什么帮助?@我猜-速度很慢,标题是“性能”,谁还需要问号?快点!发帖到early:)@Sinatr我刚看了一下这个问题,并尝试了回避LINQ,但这对我的结果影响不大。还需要3分钟。所以,你们认为这是可能的放缓(如30秒)或我必须接受3-5分钟?@j.zeddi,我不是专家,接受的答案提到WMI,也许值得尝试?好吧,如果它工作得很好,你们需要什么帮助?@无损,我猜-它很慢,标题是“性能”,谁还需要问号?快点!发帖到early:)@Sinatr我刚看了一下这个问题,并尝试了回避LINQ,但这对我的结果影响不大。还需要3分钟。所以你们认为有可能放慢速度(比如30秒)还是我必须接受3-5分钟?@j.zeddi,我不是专家,被接受的答案是,也许值得尝试一下。考虑删除这个答案并张贴,因为这个帖子觉得你的问题更一般的版本,缺乏良好的样本。考虑删除这个答案,并张贴到该职位感到更一般的版本你的问题,缺乏良好的样本。
    EventLogSession session = new EventLogSession(Environment.MachineName);

    // [System/Level=2] filters out the errors
    EventLogQuery query = new EventLogQuery("Log", PathType.LogName, "*[System/Level=2]");

    EventLogReader reader = new EventLogReader(query);

    for (EventRecord eventInstance = reader.ReadEvent();
        null != eventInstance;
        eventInstance = reader.ReadEvent())
    {
        // Output or save your event data here.
    }