私のプログラムでは、基本的にファイルを読み込んで処理を行い、それをメモリストリームとしてメインプログラムに戻します。このメモリストリームはストリームリーダーによって処理されます。これはすべて私のメインの横にあるクラスによって処理されます。
問題は、別のクラスのメソッドからメモリストリームを返すときに、「canread」変数がfalseに設定されているため、streamreaderの初期化が失敗することです。
以下は、発生している問題の例です(ただし、ここでは他のクラスのメモリストリームに書き込んでいますが、それを返すと同じエラーが発生します。
「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);
「returnMemStream」にブレークポイントを設定しても、「CanRead」プロパティは引き続きtrueに設定されています。メイン関数に戻り、戻り値をMStreamに書き込むようにステップすると、「CanRead」プロパティがfalseに設定されます。これにより、StreamReaderで、MStreamを読み取ることができなかったという例外が発生します(プロパティが示すように)。データは本来あるべきストリームバッファにありますが、私はそれを取り出すことができません。
メインに戻されたときに「CanRead」がtrueを報告するように設定するにはどうすればよいですか?または、MemoryStreamがどのように機能し、やりたいことをどのように達成するかを誤解していますか?