Я хотел бы await по результату BlockingCollection<T>.Take() асинхронно, поэтому я не блокирую поток. Ищете что-нибудь вроде этого:
var item = await blockingCollection.TakeAsync();
Я знаю, что смогу сделать это:
var item = await Task.Run(() => blockingCollection.Take());
но этот вид убивает всю идею, потому что вместо этого блокируется другой поток (ThreadPool).
Есть ли альтернатива?