ファイルを読み取るための次のコードがあります
StreamReader str = new StreamReader(File.Open(fileName, FileMode.Open, FileAccess.Read));
string fichier = str.ReadToEnd();
str.Close();
これはasp.net Webサービスの一部であり、本番環境で1年間正常に動作しています. 現在、サーバーの負荷が増加しているため、顧客は「ファイルは既に使用されています」というエラーを受け取り始めています。そのファイルはこのコードから読み取られており、アプリケーションから書き込まれることはありません。
私が明確に見ている問題の 1 つは、後で使用するためにファイルの内容をキャッシュしていないことです。私たちはそれを行います。しかし、この問題が発生する理由と方法を理解する必要があります。
複数のスレッドがファイルを読み込もうとしていることが原因ですか? StreamReader はスレッド セーフではないことを読みましたが、読み取りモードでファイルを開くときに問題になるのはなぜですか?