Я изучаю использование новых клавиш async / await в c # 5 и читаю эту статью
вижу следующий пример
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);
}
}
Предположительно, если список URL-адресов ОЧЕНЬ длинный, мы можем оказаться в ситуации, когда конус потока выходит из-под контроля.
Что я хотел бы знать, так это рекомендуемый способ контроля количества используемых потоков. Есть ли способ указать пул потоков или максимальное число?
С TPL вы можете использовать опции для контроля максимального количества потоков
ParallelOptions.MaxDegreeOfParallelism. Возможно, какой-то способ объединения await и Task будет возможен.