Метод запроса файлов с серверов является асинхронным, из HttpClient.
Я думал о нескольких вариантах:
Вариант 1: foreach и ожидание каждой итерации
Код: Выделить всё
public class Application
{
private readonly List _servers = [];
public async Task RequestFiles()
{
foreach(Server iteratorServer in Servers)
{
await iteratorServer.RequestFiles();
}
}
}
public class Requester
{
private readonly HttpClient _httpClient;
private readonly List _files = [];
public async Task ReqeustFiles()
{
foreach(File iteratorFile in _files)
{
await _httpClient.GetStreamAsAsync("URL");
}
}
}
Приложение открытого класса
{
Частное только для чтения Список _servers = [];
Код: Выделить всё
public async Task RequestFiles()
{
foreach(Server iteratorServer in Servers)
{
await iteratorServer.RequestFiles();
}
}
Сервер общедоступного класса
{
частный HttpClient только для чтения _httpClient;
частный список только для чтения _files = [ ];
Код: Выделить всё
public async Task ReqeustFiles()
{
List tasks = [];
foreach(File iteratorFile in _files)
{
Task.Add(_httpClient.GetStreamAsAsync("URL"));
}
wait Task.WhenAll(tasks);
}
public class Application
{
частный список только для чтения _servers = [];
Код: Выделить всё
public async Task RequestFiles()
{
List tasks = [];
foreach(Server iteratorServer in Servers)
{
Tasks.Add(iteratorServer.RequestFiles());
}
await Task.WhenAll(tasks);
}
запрашивающий общедоступный класс
{
частный HttpClient только для чтения _httpClient;
частный список только для чтения _files = [ ];
Код: Выделить всё
public async Task ReqeustFiles()
{
List tasks = [];
foreach(File iteratorFile in _files)
{
Task.Add(_httpClient.GetStreamAsAsync("URL"));
}
wait Task.WhenAll(tasks);
}
Лучше один вариант, чем другой? на практике то же самое? в чем разница? Есть ли другие варианты, которые могут быть лучше?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/782 ... nother-way