Как использовать Parallel.ForEachAsync для вызова http-запроса для обработки ответов с несколькими потоками событий?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Parallel.ForEachAsync для вызова http-запроса для обработки ответов с несколькими потоками событий?

Сообщение Anonymous »

Название ОС: Mac OS X
Версия ОС: 13.4
Платформа ОС: Darwin
RID: osx-arm64
.net core: Версия: 8.0.1
Я хочу запросить URL-адрес потока событий, используя следующий код, который работает нормально.

private async Task GetSearchResult(string url)
{
var repoList = new List();
using (var client = new HttpClient())
{

try
{

var stream = await client.GetStreamAsync(url);
using (var streamReader = new StreamReader(stream))
{
while (!streamReader.EndOfStream)
{
var m = streamReader.ReadLine();
if (m != null && m.StartsWith("data: {\"filename\":\"package.json\""))
{

var contentInfo = JsonSerializer.Deserialize(repoString);
repoList.Add(contentInfo.repo);

}
catch (Exception e)
{
Console.WriteLine(e.Message, "ddddd");
}

}
return repoList;
}

public async Task SearchDependencies(string searchName)
{

var url = this.BuildSearchUrl(searcheLib);
return await this.GetSearchResult(url);
}

private async Task ExcuteSearchGitLabSubAll(CommandOPtions commandOPtions)
{
List repoInfos = new List();

var packages = [];

foreach (var packageName in packages)
{

var result = await SearchDependencies(packageName);
if (result != null)
{
repoInfos.AddRange(result);
Console.WriteLine("------------{0},{1}", "completed!!", packageName);
}
}

Console.WriteLine("------------{0},{1}", "completed All!!", path);
}

Однако, если я захочу выполнить ее параллельно, программа завершится, не дожидаясь завершения всех задач.
private async Task ExcuteSearchGitLabAll(CommandOPtions commandOPtions)
{

var allLibs = Const.fileList;
List repos = new List();

await Parallel.ForEachAsync(allLibs, async (lib,token) =>
{

var result = await codeBaseService.SearchDependencies(lib);
repos.AddRange(result);
});

});
Console.WriteLine("------------{0}", "completed All!!");

}


Подробнее здесь: https://stackoverflow.com/questions/784 ... -eventstre
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать CancellationTokenSource в Parallel.ForEachAsync
    Anonymous » » в форуме C#
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Как использовать CancellationTokenSource в Parallel.ForEachAsync
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Task.WhenAll против Parallel.ForEachAsync – какой подход лучше и почему?
    Anonymous » » в форуме C#
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous
  • Почему запуск нового потока внутри Parallel.ForEachAsync приводит к тому, что мой код мешает сам себе?
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Parallel.ForEachAsync в серверном приложении Blazor
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»