У меня много операций, которые я хочу запустить асинхронно.Я делаю:
var tasks = new List<Task<bool>>();
for(var i=0;i<1000;i++){
tasks.Add(CreateGeoreferencedImageAsync(properties, scaleIndex, currentXmin, currentYmin, currentXmax, currentYmax));
}
while (tasks.Count > 0)
{
var bunch = tasks.Take(4).ToList();
bool[] firstFinishedTask = await Task.WhenAll(bunch);
tasks.RemoveRange(0,4);
}
Но я вижу, что WhenAll
выполняет все задачи из tasks
, а не только из bunch
.
Что я пропустил?
ОБНОВЛЕНИЕ
private Task<bool> CreateGeoreferencedImageAsync(ImageGenerationProperties
properties, int scaleIndex,
double currentXmin, double currentYmin, double currentXmax, double currentYmax)
{
return Task.Run(() =>
{
return CreateGeoreferencedImage(properties, scaleIndex, currentXmin, currentYmin, currentXmax,
currentYmax);
});
}