Поток с отдельными позициями записи и чтения

Я хочу эмулировать сетевой поток типа -на одном ПК.

Я сделал это, создав Stream, который принимает 2 основных потока: один для чтения, а другой для записи.

Затем я создаю 2 экземпляра этого класса, меняя местами 2 потока. В настоящее время я использую MemoryStreamв качестве двух базовых потоков.

Проблема, с которой я столкнулся сейчас, заключается в том, что если я запишу X байтов в MemoryStream, то его позиция будет X, и если я затем сделаю Read, я не получу данных, так как нахожусь в конце потока..

Учитывая, что я обычно выполняю пару операций чтения/записи (, поэтому нельзя просто сбрасывать позицию на 0 после каждой записи ), что Streamя могу использовать, чтобы получить такое поведение?

По сути, мне нужна своего рода очередь байтов, в которую я могу записывать и читать в форме потока.

т. е. (игнорирование фактических аргументов метода)

MyStream.Write({ 1, 2, 3, 4, 5, 6 });
MyStream.Write({ 7, 8 });
MyStream.Read(3) // Returns { 1, 2, 3 }
MyStream.Read(4) // Returns { 4, 5, 6, 7 }
8
задан George Duckett 27 April 2012 в 14:37
поделиться