1

たとえば、変更されたファイルを 5 分ごとにバッチ処理するためのTimerとを含むアプリケーションがあります。FileSystemWatcher

FileSystemWatcherファイルが変更され、ファイル パスが に追加されると、 はイベントを発生させます。これは、ファイルがQueueキューに既に存在するかどうかを確認した後でのみ行われます。

Timerティックがキューを反復すると、各アイテムがポップされて処理されます。キューが空になるまで。

私の質問は次のとおりです。

  • この問題を正しく解決し、正しいデータ型を使用しようとしていますか?
  • への同時アクセスについて心配する必要はありQueueますか? もしそうなら、どのように対処すればよいですか?
4

1 に答える 1

1

EDITED: 質問1:私が見るように、ファイルのバッチ処理に使用しているアプローチとオブジェクトは適切だと思います。注: 変更を処理する時間間隔は、ファイル ロックの問題などに遭遇しないように十分に公平である必要があります。

質問 2: キューが同じインスタンスからアクセスされる場合、問題は見られません。コレクションに別のスレッドからアクセスしている場合、通常はコレクションでロックの問題が発生しますが、ここではそうではありません。

次に、その問題が発生した場合、またはキュー アクセスとスレッド セーフが心配な場合は、次の使用をお勧めします - Concurrent Collection 型

あなたの質問: 「FileSystemWatcher が変更されたファイルを追加するのと同時にタイマーが作動するとどうなりますか?」- この質問への回答は - 「例外やエラーは発生せず、ファイルの変更の追加項目は、処理のために次のタイマーティックで表示されます。」

于 2012-12-05T12:22:24.063 に答える