Как дублировать поток

1

В настоящее время у меня есть этот код

SessionStream(Request.Content.ReadAsStreamAsync(), new { });

Мне нужно как-то "зеркально отобразить" входящий поток, чтобы у меня было два его экземпляра. Что-то вроде следующего псевдокода:

Task<Stream> stream = Request.Content.ReadAsStreamAsync();

SessionStream(stream, new { });

Stream theotherStram;

stream.Result.CopyToAsync(theotherStram)

ThoOtherStream(theotherStram, new { });
Теги:
stream

1 ответ

2

Техника, которая всегда работает, - это копировать поток в MemoryStream а затем использовать его.

Часто, более эффективно просто искать исходный поток обратно в начало с помощью метода Seek. Это работает только в том случае, если этот поток поддерживает поиск.

Если вы не хотите буферизировать и не можете искать, вам нужно нажать на содержимое потока в блоке два этих двух пользователя. Прочтите блок, напишите его два раза.

Если вам нужна тянущая модель (т.е. Передать читаемый поток некоторому компоненту), он становится очень трудным и задействован поток. Вам нужно будет написать адаптер push-to-pull, который всегда будет трудным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню