В моей программе я в основном читаю файл, выполняю с ним некоторую обработку, а затем передаю его основной программе в виде потока памяти, который будет обрабатываться потоковым считывателем. Все это будет обрабатываться классом рядом с моим 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 и как мне выполнить то, что я хочу сделать?