Вы можете сделать это
EventLog appLogs = new EventLog("Application");
var entries = appLogs.Entries.Cast<EventLogEntry>()
.Where(x => x.TimeWritten >= DateTime.Now.AddMinutes(-60))
.ToList();
Однако, не имеет значения, сколько времени вы фильтруете по нему, все равно будет столько же времени.
Я не знаю, как это сделать.ускорить это (что я знаю)
Хотя вы можете захотеть посмотреть на EventLog.EntryWritten Event
Происходит, когда запись записывается вжурнал событий на локальном компьютере.
Remnarks
Чтобы получать уведомления о событиях, необходимо установить для параметра EnableRaisingEvents значение true.Вы можете получать уведомления о событиях только тогда, когда записи записаны на локальном компьютере.Вы не можете получать уведомления о записях, написанных на удаленных компьютерах.
EventLog myNewLog = new EventLog("Application", ".", "testEventLogEvent");
myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
myNewLog.EnableRaisingEvents = true;
Предположительно, это будет более легким способом, чем попытка опроса EventLog Plumbing