MemoryStream отключает чтение при возврате

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

Проблема в том, что когда я возвращаю поток памяти из своего метода в другом классе, для переменной "canread" устанавливается значение false, что приводит к сбою инициализации потокового чтения.

Ниже приведен пример проблемы, возникающей (, хотя здесь я пишу в поток памяти в другом классе, но все равно вызывает ту же ошибку, когда я возвращаю ее обратно.

В классе под названием «Другой класс»:

public static MemoryStream ImportantStreamManipulator()
{
   MemoryStream MemStream = new MemoryStream();

   StreamWriter writer = new StreamWriter(MemStream);
   using (writer)
   {
       //Code that writes stuff to the memorystream via streamwriter

       return MemStream;
   }
}

Функция вызывает в основной программе:

MemoryStream MStream = Otherclass.ImportantStreamManipulator();
StreamReader reader = new StreamReader(MStream);

Когда я ставлю точку останова на «возврат MemStream», свойство «CanRead» по-прежнему имеет значение true. Как только я делаю шаг таким образом, что он возвращается к моей основной функции и записывает возвращаемое значение в MStream, для свойства «CanRead» устанавливается значение false. Затем это вызывает исключение в StreamReader, указывающее, что MStream не может быть прочитан (, поскольку свойство указывает ). Данные находятся в буфере потоков, как и должно быть, но я просто не могу их получить.

Как мне установить его так, чтобы «CanRead» сообщал об истине, когда он возвращался на мой основной? Или я неправильно понимаю, как работает MemoryStream и как мне выполнить то, что я хочу сделать?

9
задан abatishchev 2 April 2015 в 04:47
поделиться