我正在研究在 c#5 中使用新的 async/await 密钥并阅读这篇文章
我看到下面的例子
async void ArchiveDocuments(List<Url> urls)
{
Task archive = null;
for(int i = 0; i < urls.Count; ++i)
{
var document = await FetchAsync(urls[i]);
if (archive != null)
await archive;
archive = ArchiveAsync(document);
}
}
据推测,如果 Urls 列表非常长,我们可能会遇到线程数失控的情况。
我想知道的是控制使用的线程数的推荐方法。有没有办法指定线程池或最大数量?
使用 TPL,您可以使用选项来控制最大线程数 ParallelOptions.MaxDegreeOfParallelism。也许某种结合 await 和 Task 的方式是可能的。