Exemple #1
0
            // wait for a tryreadasync to finish, then continue async
            static async ValueTask <List <T> > ReadAllAsync_ContinueAfterTryReadAsync(AsyncReader <T> self, ValueTask <ReadResult <T> > waitFor, List <T> ret, CancellationToken cancel)
            {
                var other = await waitFor;

                if (other.HasValue)
                {
                    ret.Add(other.Value);
                }
                else
                {
                    return(ret);
                }

                while (true)
                {
                    var res = await self.TryReadAsync(cancel);

                    if (res.HasValue)
                    {
                        ret.Add(res.Value);
                    }
                    else
                    {
                        break;
                    }
                }

                return(ret);
            }
Exemple #2
0
        public ValueTask <bool> MoveNextAsync()
        {
            AssertNotDisposed();

            var task = Reader.TryReadAsync(Token);

            if (task.IsCompletedSuccessfully)
            {
                var res = task.Result;
                if (!res.HasValue)
                {
                    return(new ValueTask <bool>(false));
                }

                Current = res.Value;
                return(new ValueTask <bool>(true));
            }

            return(MoveNextAsync_ContinueAfterReadAsync(this, task, Token));