У меня есть следующее, которое вызывается в контроллере Web Api. Каждая задача запускает сторонний API-запрос. В настоящее время первая выполненная задача возвращается правильно, но последующие задачи, которые занимают более 500 мс, выполняются до завершения.
List<Task> tasks = new List<Task>();
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(500);
foreach (Models.Channel.IChannel channel in channels)
{
try
{
tasks.Add(Task.Run(() =>
{
if (cts.Token.IsCancellationRequested)
cts.Token.ThrowIfCancellationRequested();
channel.Data = channel.RequestOffers(new Models.Request.AvailabilityRequest()).Result;
availabilityResponse.Agents.Add(channel.Name);
}, cts.Token));
Task.WaitAny(tasks.ToArray());
}
catch (Exception ex)
{
log.Error(ex);
}
}
Почему не отменяются задачи продолжительностью более 500 мс?