С одной стороны, вам нужно различать потоки (двоичные данные) и StreamReader
с или, в более общем смысле, TextReader
с (текстовые данные).
Звучит так, как будто выхочу создать подкласс TextReader
, который будет принимать (в своем конструкторе) набор TextReader
параметров.Вам не нужно с нетерпением читать что-нибудь здесь ... но в методах Read
, которые вы переопределяете, вы должны читать из "текущего" считывателя до тех пор, пока он не исчерпается, а затем начинать со следующего.Имейте в виду, что Read
не имеет для заполнения предоставленного буфера - так что вы можете сделать что-то вроде:
while (true)
{
int charsRead = currentReader.Read(buffer, index, size);
if (charsRead != 0)
{
return charsRead;
}
// Adjust this based on how you store the readers...
if (readerQueue.Count == 0)
{
return 0;
}
currentReader = readerQueue.Dequeue();
}
Я сильно подозреваю, что уже есть сторонние библиотекиимейте в виду, что для такого рода демультиплексирования ...