在以下一行
EventLogEntry[] entries = _eventLog.Entries.Cast<EventLogEntry>().ToArray();
同样适用于
_eventLog.Entries.CopyTo(..)
我们有时会得到一个IndexOutOfRangeException
System.Diagnostics.EventLogInternal.IntFrom(Byte[] buf, Int32 offset)
System.Diagnostics.EventLogInternal.GetCachedEntryPos(Int32 entryIndex)
System.Diagnostics.EventLogInternal.GetEntryWithOldest(Int32 index)
System.Diagnostics.EventLogInternal.GetEntryAtNoThrow(Int32 index)
System.Diagnostics.EventLogEntryCollection.EntriesEnumerator.MoveNext()
System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext()
System.Linq.Buffer`1..ctor(IEnumerable`1 source)
System.Linq.Enumerable.ToArray(TSource)(IEnumerable`1 source)
我们使用它来创建某种Logviewer,它不会绑定到它运行的机器上。 该对象只能从一个trhead访问。
我的猜测是,有时会出现“赛车条件”。 当您查看SourceCode时,很明显在访问枚举器时删除条目可能是异常的原因。