Мне нужно выполнить много методов одновременно и в результате всех объединить их в один список. В следующем примере я жду 3 секунды для каждого метода, но в одном из них я добавил сон (10 секунд), чтобы проверить результат, а он не является ожидаемым. Метод никогда не отменяет и ждет эти 10 секунд. В чем проблема? Спасибо!
var result = await Task.Run(() => Load<MyCustomClass>(OneMethod(), OtherMethod()));
private List<T> OneMethod()
{
return new List<T>();
}
private List<T> OtherMethod()
{
Thread.Sleep(10000);
return new List<T>();
}
private async Task<List<T>> Load<T>(params List<T>[] taskList)
{
try
{
return (await Task.WhenAll(taskList.Select(x =>
Task.Run(() => x, new CancellationTokenSource(3000).Token)))).SelectMany(x => x).ToList();
}
catch (Exception currentException)
{
//BLA BLA BLA
}
return new List<T>();
}