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

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

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

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

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

12 ответов

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

Проще говоря, у меня есть метод 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?🙂

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта