我想要异步地
await
BlockingCollection<T>.Take()
的结果,以便不会阻塞线程。寻找类似于这样的任何东西:var item = await blockingCollection.TakeAsync();
我知道我可以这样做:
var item = await Task.Run(() => blockingCollection.Take());
但这样做会破坏整个想法,因为另一个线程(ThreadPool
的线程)会被阻塞。
有没有其他替代方案?
await Task.Run(() => blockingCollection.Take())
,任务将在其他线程上执行,你的 UI 线程就不会被阻塞。这不就是重点吗? - Selman GençRun()
之后使用ConfigureAwait
,这仍然会是一个问题吗?[编辑:没关系,我现在明白你的意思了] - MojoFilter