我有以下在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米的任务?