エラー:ストリームを読み取れませんでした。
「ストリームを読み取れませんでした。」というエラーが出るのですが、
原因を特定することが出来ないので質問させていただきました。
現在クラス変数で宣言している1つのストリーム変数に対して、
二つのマルチスレッドで、交互にストリームを生成・上書きを1秒おきに繰り返しています。
そして、そのストリームを別スレッドで定期的にBinaryReaderで読み込んでいます。
マルチスレッドによって、常にストリーム変数にストリームが格納されている状態なので、今回のようなエラーは起こりえないと考えていますが、ランダムなタイミングで今回のエラーが発生する状況です。
このエラーの解決方法や原因が分かる方がいましたら、ご教授をお願いします。
~大まかですがソースを載せます
// ストリーム
private Stream stream;
public void reader()
{
// ストリーム生成処理呼び出し
Thread thread_A = new Thread(new ThreadStart(A));
thread_A.Start();
while (true)
{
try
{
using (BinaryReader reader = new BinaryReader(this.stream))
{
読み取り処理
}
reader.Close();
Thread.Sleep(1000);
}
catch{
ストリームが読み取れませんでした。
}
}
private void A()
{
while (true)
{
// ストリーム生成処理
thread thread_A = new Thread(new ThreadStart(B));
thread_A.Start();
Thread.Sleep(1000);
// ストリーム生成処理
Thread thread_B = new Thread(new ThreadStart(C));
thread_B.Start();
Thread.Sleep(1000);
}
}
private void B()
{
this.stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}
private void C()
{
this.stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
}