Dispose XMLReader in SessionLogReader
I think you need to add this to your Cleanup method:
You have to cast it to IDisposable before disposing it because it uses explicit interface implementation.
((IDisposable)_reader).Dispose();