2011-11-08 19 views
-2

私はファイル名でファイルストリームを取得するためのメソッドを作成し、私の方法は、マルチスレッドで動作することができますことを期待したいが、それが失敗した...ここに私のコード:あなたが探しているものをおそらくファイルを取得するためのマルチスレッドの作成方法は?

public static class FileHelper 
{ 
    private static object lockObject = new object(); 
    private static Stream fileStream; 

    public static Stream GetFileStream(string filename) 
    { 
     if (fileStream != null) 
      return fileStream; 

     lock(lockObject) 
     { 
      if (fileStream != null) 
      { 
       return fileStream; 
      } 

      fileStream = File.OpenRead(filename); 
      return fileStream; 
     } 
    } 
} 
+10

「それは本当に良い説明ではありません。複数のスレッドが同じストリームを使用しようとすると、相互に混乱を招くことに注意してください。単一のファイルを複数のスレッドで読み取ることは、とにかくそれが単一のドライブ上にあると仮定すると、一般的には悪い考えです。 –

+1

私は彼が同じストリームを使うのに複数のスレッドを使いたいと思っているのではなく、スレッドセーフなクラスで読み書きをしたいと思っていますか? –

+1

それは必ずしも悪い考えであるために同じ流れである必要はありません。同じファイルにすることもできます。 – Graymatter

答えて

関連する問題