【发布时间】:2011-12-22 20:14:51
【问题描述】:
我正在研究在 c#5 中使用新的 async/await 密钥并阅读 this article
我看到下面的例子
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 的方式是可能的。
【问题讨论】:
标签: multithreading async-await c#-5.0