從事件日誌類的文檔中,EventLogEntryCollection是事件日誌條目的動態列表。它建議直接使用Count屬性,而不是將其值存儲在變量中。實施此行爲:C#動態列表到靜態列表
private void ReadEventLog()
{
EventLog eventLog = new EventLog("Application", "TheGreatestMachineInTheWorld");
EventLogEntryCollection eventLogEntries = eventLog.Entries;
for (int i = 0; i < eventLogEntries.Count; i++){
EventLogEntry entry = eventLog.Entries[i];
//Do Some processing on the entry
}
大型事件日誌(> 20000條目)速度較慢。 for循環而不是foreach的原因是因爲我需要迭代器位置來指示這個事情要結束多久。
存儲計變量並遍歷是:
int eventLogEntryCount = eventLogEntries.Count;
for (int i = 0; i < eventLogEntryCount; i++){
EventLogEntry entry = eventLog.Entries[i];
//Do Some processing on the entry
}
提供顯着的性能提升。但是,如果在處理髮生時正在寫入事件日誌,則會導致索引超出範圍異常。有沒有一種方法來靜態存儲這個列表,所以計數不會改變?
正在寫入'eventLog'對象還是正在運行程序時正在寫入機器事件日誌? –
這將是機器事件日誌 – Dudemanword