Не используйте конструктор Task
, который принимает Action
вместо Func<Task>
в качестве аргумента. Используйте Task.Run()
вместо этого, если вы действительно хотите работать в пуле потоков. Он принимает Func<Task>
и должным образом ожидает завершения функции, а не выполнения в режиме «забыл и забыл», как это делает ваш конструктор.
Кроме того, старайтесь избегать вызова .GetResult()
, который потенциально может вызвать тупики. Вместо этого напишите свою основную функцию так:
static async Task Main(string[] args) {
await DownloadFilesTasksAsync();
}