public async Task TestMethod1() { var iterated = new List <int>(); var sequence = new AsyncSequence(); await foreach (var item in sequence) { iterated.Add(item); } Assert.IsTrue(iterated.Count == 10); }
private static async AsyncSequence <int> Test2() { var yield = await AsyncSequence <int> .Capture(); await Task.Delay(0).ConfigureAwait(false); for (var i = 1; i <= 3; i++) { yield.Return(i); } return(yield.Break()); }
public static async AsyncSequence <int> Producer2() { var seq = await AsyncSequence <int> .Capture(); // Capture the underlying 'Task' for (int i = 1; i <= 5; i++) { await Task.Delay(100).ConfigureAwait(false); // Use any async constructs seq.Return(i); // Return to an awaiting MoveNext, or queue the result. } return(seq.Break()); // Returns false to awaiting MoveNext }
private static async AsyncSequence <int> Test1() { var yield = await AsyncSequence <int> .Capture(); await Task.Delay(0).ConfigureAwait(false); yield.Return(1); yield.Return(2); yield.Return(3); return(yield.Break()); }
public async Task TestMethod2() { var iterated = new List <int>(); var sequence = new AsyncSequence(); IAsyncEnumerator <int> enumerator = sequence.GetAsyncEnumerator(); try { while (await enumerator.MoveNextAsync()) { iterated.Add(enumerator.Current); } } finally { await enumerator.DisposeAsync(); } Assert.IsTrue(iterated.Count == 10); }