using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MongoDB.Driver; namespace xDataService.Mongo { public class XMongoAsyncCursor : IAsyncCursor { public IEnumerable Current { get; } private IEnumerator CurrentEnumerator { get; } public XMongoAsyncCursor (IEnumerable source) { this.Current = source; this.CurrentEnumerator = source.GetEnumerator (); } public void Dispose () { CurrentEnumerator.Dispose (); } public bool MoveNext (CancellationToken cancellationToken = default) { return CurrentEnumerator.MoveNext (); } public Task MoveNextAsync (CancellationToken cancellationToken = default) { return Task.Run ( () => CurrentEnumerator.MoveNext (), cancellationToken : cancellationToken ); } } }