我在 Azure 上实现了一个工作角色,它需要从 Azure 存储中删除 blob。假设我的 blob 列表有大约 10K 项。
最简单的同步方法可能是:
Parallel.ForEach(list, x => ((CloudBlob) x).Delete());
要求:
我想异步实现相同的东西(在单个线程上)。
我想将并发连接数限制为 50 - 所以当同时只执行 50 个异步连接时,我将执行 10K 删除。如果一个删除完成,可以开始一个新的。
解决方案?
到目前为止,在阅读了这个问题和这个问题之后,似乎TPL Dataflow是要走的路。
这是一个如此简单的问题,数据流似乎有点过头了。有没有更简单的选择?
如果没有,这将如何使用数据流来实现?据我了解,我需要一个执行async
删除的操作块(我需要await
吗?)。创建我的块时,我应该设置MaxDegreeOfParallelism
为 50。然后我需要将我的 10K blob 从列表中发布到块,然后使用block.Completion.Wait()
. 它是否正确?