Async is not new at all, but classes that really leverage it well might be (pipelines again).
Async is not new at all, but classes that really leverage it well might be (pipelines again).
I believe GP is referring to async streams[0]. Notwithstanding the colourful language GP used, I think the new async streams are pretty cool.
[0] https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/gen...
I mean, "slightly more code" - you can say the same about "async ... await" in general, but then it's "insanely more code" and huge potential for error.
It looks that way to me.
i.e. a List<Task<T>> is not the same as an AsyncEnumerable<T>. List<Func<Task<T>>> would be more equivalent, but you needed to have a List<T> which you need to fill beforehand.
You would have to define a few custom types. I have written code that looks something like
while (! ctx.IsCancellationRequested)
{
var data = await source.GetData();
await Process(data);
}
Where source is an interface that we have defined.
This is not much more complex than an async enumerable.It's definitely possible, and if you save an allocation then that's a step up, but not a game changer for most business process.