C# 如何仅读取添加到事件日志中的新事件?

C# 如何仅读取添加到事件日志中的新事件?,c#,windows,winapi,event-log,C#,Windows,Winapi,Event Log,我正在做一个项目来读取和显示windows事件日志。我使用以下代码从事件日志中读取事件并显示它们 public static void Main(string[] args) { EventLog[] ev; ev = EventLog.GetEventLogs(); Console.WriteLine("Number of logs on computer: " + ev.Length); foreach (EventLog log in ev)

我正在做一个项目来读取和显示windows事件日志。我使用以下代码从事件日志中读取事件并显示它们

public static void Main(string[] args)
{
    EventLog[] ev;

    ev = EventLog.GetEventLogs();

    Console.WriteLine("Number of logs on computer: " + ev.Length);

    foreach (EventLog log in ev)
    {
        Console.WriteLine("Log: " + log.Log);
        foreach (EventLogEntry entry in log.Entries)
        {
            Console.WriteLine("Entry: " + entry.Message);
            Console.WriteLine("Source: " + entry.Source);
            Console.WriteLine("Category: " + entry.Category);
            Console.WriteLine("EventID: " + entry.Source);
        }
    }
}
这段代码运行良好。它显示已存储在日志文件中的所有事件。但我想在这之后实现的是,我必须阅读即将发生的事件,并每隔10秒更新一次

如果我继续并再次调用相同的函数,我将获得所有事件,但我只需要新添加的事件。我如何做到这一点

TL DR:我只想听事件日志中新添加的事件,而不是整个事件日志

EventLog appLogs = new EventLog("Application");

var entries = appLogs.Entries.Cast<EventLogEntry>()
                     .Where(x => x.TimeWritten >= DateTime.Now.AddMinutes(-60))
                     .ToList();

这可能比尝试轮询EventLog管道更轻松。

通过MSDN,我自己找到了解决方案。这是为将来可能来这里的人准备的,这是解决办法


虽然前面的答案是正确的,但我只是想添加,您可以添加一个事件处理程序,用于除管理日志之外的日志。

感谢@TheGeneral提供的解决方案,如果有一个像事件收集器这样的东西可以直接收集事件,而不是从事件日志中读取事件,那就太好了!
EventLog myNewLog = new EventLog("Application", ".", "testEventLogEvent");                 

myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
myNewLog.EnableRaisingEvents = true;