在我的程序中,我基本上是在读取一个文件,对其进行一些处理,然后将其作为内存流传递回主程序,这将由流读取器处理。这一切都将由我的主要课程旁边的一个班级处理。
问题是,当我从另一个类中的方法返回内存流时,“canread”变量设置为 false,从而导致流读取器初始化失败。
下面是发生问题的示例(尽管在这里我正在写入另一个类中的内存流,但是当我将其传回时它仍然会导致相同的错误。
在名为“Otherclass”的类中:
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);
当我在“return MemStream”上放置断点时,“CanRead”属性仍然设置为 true。一旦我执行到返回主函数并将返回值写入 MStream 的步骤,“CanRead”属性将设置为 false。然后这会导致 StreamReader 中出现异常,指出无法读取 MStream(如属性所示)。数据应该在流缓冲区中,但我就是无法将其取出。
如何设置它以便“CanRead”在返回到我的主目录后报告为真?还是我误解了 MemoryStream 的工作原理以及我将如何完成我想做的事情?