170 похожих чатов

Привет всем. У меня есть список имён файлов. Я должен

по именам файлов найти их, и вернуть стримы из них. На выходе должен получиться список стримов. Каждый отдельный поток я получаю через метод, возвращающий Task<Stream>.
Кажется, сюда напрашивается AsyncEnumerable, но я что-то не понимаю как мне его заюзать.

Вот такой вариант ниже - он же не имеет смысла, так?

async IAsyncEnumerable<Stream> GetStreams(List<string> paths) {
foreach (var path in paths) {
yield return await fileService.GetStream(path);
}
}

12 ответов

3 просмотра
Михаил-Проказин Автор вопроса

Проще говоря, у меня есть метод A -> Task<B>, как мне с его использованием получить метод IEnumerable<A> -> IAsyncEnumerable<B>?

Михаил Проказин
Проще говоря, у меня есть метод A -> Task<B>, как ...

await foreach (var item in iAsyncEnumerable<Collection>) yield return item;

Михаил-Проказин Автор вопроса
Михаил Проказин
Проще говоря, у меня есть метод A -> Task<B>, как ...

Нашёл такой вариант: public static async IAsyncEnumerable<T> ParallelEnumerateAsync<T>( this IEnumerable<Task<T>> tasks) { var remaining = new List<Task<T>>(tasks); while (remaining.Count != 0) { var task = await Task.WhenAny(remaining); remaining.Remove(task); yield return (await task); } } Вопрос закрыт, если никто не захочет ничего добавить.

Михаил-Проказин Автор вопроса
Danil S
await foreach (var item in iAsyncEnumerable<Collec...

У меня на входе нет async enumerable. Мне его самому нужно сделать. Пример который мне вроде подходит выше.

Михаил Проказин
Нашёл такой вариант: public static async IAsyncEnu...

remaining.Remove(task); - выглядит не очень тредсейф

Danil S
remaining.Remove(task); - выглядит не очень тредсе...

Из-за when any там не будет нескольких потоков

Михаил Проказин
Нашёл такой вариант: public static async IAsyncEnu...

Этот код не гарантирует порядка исходного IEnumerable, если это для вас важно

SomebodyOdd
Этот код не гарантирует порядка исходного IEnumera...

Кажется от parallel enumerate это вообще не ожидается

Danil S
Кажется от parallel enumerate это вообще не ожидае...

Ну мааааало ли. В PLINQ, например, есть опция порядок сохранять

да.

А зачем для этой задачи async?🙂

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта