4

次の構造のフォルダーがあります

Parent/
    Child1/
        GrandChild1/
             File1.txt

親フォルダーにクエリを実行し、Child1 が変更されたかどうかを確認する必要があります。

Changed = 新しいファイルが追加/更新/削除されました。

Child1 フォルダー DateModified は更新されません。変更が発生すると、変更された GrandChild1 の日付のみが更新されました。rootparent が変更されたかどうかを判断するために、ファイル レベルに行くのを避けようとしています。多くのフォルダーとサブフォルダーが存在するためです。Child1 が変更されたかどうかを知る必要があるだけです。

私は FileSystemWatcher を使用したくありません。これをスケジュールされたジョブとして実行していて、ライブで監視していないからです。

4

3 に答える 3

6

ユーザー FileSystemWatcher。よくある間違いなので、イベントの発生を有効にすることを忘れないでください (watchfolder.EnableRaisingEvents = true;)。

FileSystemWatcher は、パフォーマンスの観点から最適ではないことが判明する場合があります。それが問題になる場合は、タイマーを使用してCRCチェックを実装し、関心のあるファイルとフォルダーの変更を確認することができます。

基本的に、監視しているフォルダー全体の CRC32 ハッシュを生成し(変数 A に保存します)、変更を確認するときが来たら、同じフォルダーの新しい CRC32 ハッシュを計算するだけです。フォルダーに (変数 B に)。次に、A と B を比較し、一致しない場合は、何かが変更されています。本当にそれほど難しいことではありません。

参照:

于 2012-10-11T14:05:46.543 に答える
1

ファイルシステムウォッチャーを試しましたか? 特定のパスからの変更についてローカル ドライブを監視し、必要に応じて、変更されたという事実を無視または処理できます。

于 2012-10-11T14:06:43.997 に答える
1

これにはFileSystemWatcherクラスを使用できます。

または、タスクを毎週実行するようにスケジュールする場合は、http: //taskscheduler.codeplex.com/およびhttp://www.emoreau.com/Entries/Articlesを参照してください。 /2004/08/Interfacing-the-Windows-Task-Scheduler.aspx

Windows Task Schedular APIへのリンクは次のとおりです。

于 2012-10-11T14:08:23.580 に答える