現在、2 つの Windows サービス (C#) の設計を改善しようとしています。サービス A は、データ エクスポート (csv ファイル) を生成し、それらを一時ディレクトリに書き込みます。そのため、ファイルはサブディレクトリである一時ディレクトリに書き込まれます。メイン出力ディレクトリの. 次に、ファイルは ( 経由でFile.Move
) 出力ディレクトリに移動されます (書き込みが成功した後)。このエクスポートは、複数のスレッドによって実行される場合があります。
別のサービス B は、定義された間隔でこの出力ディレクトリからファイルを取得しようとします。ロックされたファイルを確実にDirectory.GetFiles()
除外する方法。
ここで
Stream stream = new FileStream("MyFilename.txt", FileMode.Open)
説明されているよう に() を使用して新しい FileStream を作成することにより、すべてのファイルをチェックしようとする必要があります。または、プロデューサー サービス (A) は、適切な検索パターンでコンシューマー サービス (B) によって自動的に除外される一時ファイル名 (*.csv.tmp) を使用する必要があります。移動が完了したら、ファイルの名前を変更します。
- このようなファイルのリスト操作を処理するためのより良い方法はありますか?