特定の内容(バックアップジョブの完了)を確認するために、テキストベースのログファイルを読み取る必要があります。明らかに、ファイルはジョブの完了時に書き込まれます。ランダムな時間に確実に使用されるファイルへの読み取り/書き込み
私の質問は、信頼性を損なうことなく、読み込みが必要なときにファイルがロックされているかロックされていることを考慮して、ファイルを読み込むにはどのようにすればいいですか?懸念
特定の内容(バックアップジョブの完了)を確認するために、テキストベースのログファイルを読み取る必要があります。明らかに、ファイルはジョブの完了時に書き込まれます。ランダムな時間に確実に使用されるファイルへの読み取り/書き込み
私の質問は、信頼性を損なうことなく、読み込みが必要なときにファイルがロックされているかロックされていることを考慮して、ファイルを読み込むにはどのようにすればいいですか?懸念
ファイルを開くときに書き込み処理が少なくともSystem.IO.FileShare.Read
と指定されていれば、書き込み中のテキストファイルを読み取ることができるはずです。
ファイルが書き込み中の場合は、ファイルを開こうとする他のすべてのプロセスでロックされ、書き込みモードになります。 読み取りモードは常に利用可能です。
ただし、読み取りプロセスで既にファイルを開いているときに書き込みプロセスで変更が保存されている場合は、ファイルをもう一度更新(Close-Open)するまで変更が反映されません。 @BrokenGlassによって解答に加えて
:
読み取り専用でファイルを開きます。読み取り/書き込みアクセスのためにそれを開こうとすると、失敗する可能性がほとんどあります(ほとんど確実です)。開くことができない場合や、他のプロセスが書き込みを停止する可能性があります。
他のプロセスで問題を起こす可能性を最小限に抑えるために、ファイルを読んでいないときに閉じます。
ファイルへの書き込み中に書き込みアクセスが拒否された場合は、ファイルが読み込み可能になるまでアプリケーションが待機できるようにする「再試行ループ」を作成する必要があります。ファイルを開こうとすると、エラーをキャッチします。失敗した場合は、少しだけスリープしてからもう一度やり直してください。 (ただし、ログファイルを監視している場合は、とにかくデータをチェックし続けることをお勧めします)。
http://stackoverflow.com/questions/1304/how-to-check-for -file-lock-in-c – craig1231
使用中!=ロックされています –
あなたはそのファイルを読み込みたい、または書き込みたいですか? –