private void WaitNext(AsyncWaitNextDelegate callback) { if (!_canNext) { if (_cacheCallbacks == null) _cacheCallbacks = new Queue<AsyncWaitNextDelegate>(); _cacheCallbacks.Enqueue(callback); } else { _canNext = false; callback(Next); } }