EventLog.Entries抛出索引超出范围异常

时间:2014-07-21 10:58:21

标签: c#

在以下一行

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时,很明显在访问枚举器时删除条目可能是异常的原因。

0 个答案:

没有答案