internal DataEnumerator(IEnumerable <T> source, OnDisposed onDisposed, OnEnumerationEnded onEnumerationEnded) { if (source == null) { throw new ArgumentNullException("source", "source can not be null!"); } mEnumerator = source.GetEnumerator(); mOnDisposed = onDisposed; mOnEnumerationEnded = onEnumerationEnded; }
public void Dispose() { IEnumerator <T> tempEnumerator = mEnumerator; mEnumerator = null; if (tempEnumerator != null) { tempEnumerator.Dispose(); mOnEnumerationEnded = null; if (mOnDisposed != null) { mOnDisposed.Invoke(mEnumerationCount); mOnDisposed = null; } } }