我在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毫秒的任务?