应该调用从EventLogQuery的ReadEvent方法返回的事件吗?
var eventLogQuery = new EventLogQuery("application", PathType.LogName) ;
using (var logReader = new EventLogReader(eventLogQuery))
{
var eventInstance = logReader.ReadEvent();
while (eventInstance != null)
{
eventInstance.Dispose(); //Should this be done? Or is this not ours to dispose?
eventInstance = logReader.ReadEvent();
}
}
我的代码是否应该在eventInstance上调用dispose?或者那是别的什么工作?
答案 0 :(得分:2)
如果它实现IDispose
,则在它离开创建它的范围之前将其丢弃 - 除非您计划因某些特定原因将其保留一段时间。除非MSDN另有说法,否则调用EventLogReader.ReadEvent()
是你认为有资格成为创造的东西(我检查了 - 它没有)。
"除非你计划将它保留一段时间"这就是为什么logReader
应该非常不愿意处理它为你创造的物品:它只是不知道你打算用它们做什么,所以它应该由你决定。如果有疑问,检查MSDN并不是一个坏主意,但如果EventLogReader.Dispose()
处理了查询结果也会很奇怪。如果您查看EventLogRecord
in MSDN,它对该主题没有任何说明,那么只需IDispose
作为建议在你>时1}} em>完成了它。