「ストリームを読み取れませんでした。」というエラーが出るのですが、
原因を特定することが出来ないので質問させていただきました。

現在クラス変数で宣言している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);
}