Stephen Cleary

Results 149 comments of Stephen Cleary

I'll take a look at this. `AsyncCollection` uses a `ConcurrentQueue` by default, which should be FIFO. The tasks are kept in an async wait queue, which is based on a...

Ah, of course. When many items are added simultaneously, they can cause a race for those tasks to retrieve the items. So when adding `n` items within a short time...

This is turning out to be fairly complex. In the meantime, you can use `AsyncProducerConsumerQueue`.

The basic approach doesn't work to preserve order. The fact that the multiple `TakeAsync` calls are concurrent makes the results unpredictable. For comparison, this test also fails, concurrently calling `Take`...

With the code in the "one op at a time" branch, this test passes: ```C# [Fact] public async Task CompleteInOrder() { var collection = new AsyncCollection(); var queue = new...

[Currently](https://github.com/StephenCleary/AsyncEx/blob/7acf8ba712e733b2032e76bd6601ad64258a9bf9/src/Nito.AsyncEx.Coordination/AsyncInvokeQueue.cs) I'm playing with a type name of `AsyncInvokeQueue` with the method name `InvokeAsync`.

Actually, I am planning something like an awaitable event, but I just realized I didn't have an issue for it. So I'm going to reopen this one. Conceptually, events map...

@cactuaroid Writing [TAP wrappers for EAP components](https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types#EAP) is one that immediately comes to mind.

Also consider whether an additional API would be useful for write caches. E.g., comments on #97

Yes, absolutely! I just read a blog post last week where someone used a base class for this, and thought it would be a good idea. The only real question...