2

シナリオは次のとおりです。

特定のディレクトリの変更を監視するアプリを作成しています。このディレクトリは、「ほぼ」一意の GUID を持つ毎分数千のファイルであふれます。ファイル形式は次のとおりです。

GUID.dat ここで、GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (内部コンテンツは関係ありませんが、単なるテキスト データです)

私のアプリは、リアルタイムで追加および削除されるすべてのファイルを表示する 1 つのテキスト ボックスを持つフォームになります。新しいファイルが入るたびに、このファイルでテキストボックスを更新する必要がありますが、最初に、この半一意の GUID が本当に一意であることを確認する必要があります。そうであれば、この新しいファイルでテキストボックスを更新します。

ファイルがそのディレクトリから削除されたら、それが存在することを確認してから削除し、それに応じてテキストボックスを更新します。

問題は、私が .NET filewatcher を使用していて、(buffersize + 1) 番目のファイルが入るたびに爆発する内部バッファーがあるように見えることです。アプリを作成し、入ってくるすべてのファイルを追加するだけですが、後で一意の GUID チェックを行いますが、さいころはしません。

4

2 に答える 2

3

私が頭の中に持っているいくつかのこと:

  • GUID が一意でない場合、同じ名前のファイルを上書きしないでしょうか。それとも、何らかの外部アクション (アーカイブのチェックなど) を行うルックアップに基づいたチェックですか? (つまり、これは YAGNI モーメントですか?)
  • 私は以前に FileSystemWatcher を使用してかなりの成功を収めまし
  • カスタム リストを操作するときに「サイコロは使わない」と言うとき、何が問題でしたか? FileSystemWatcher を使わずに、ファイル システムの変更をどのようにチェックしていたのでしょうか?!

申し訳ありませんが、まだ答えがありません。問題についてもっと知りたいだけです:)

于 2008-08-26T19:48:48.107 に答える
2

あらゆる種類のシェル イベントを通知できるSHChangeNotify API 呼び出しを確認することをお勧めします。ファイルの作成と削除のアクティビティを監視するには、SHCNE_CREATE および SHCNE_DELETE 引数に特に注意する必要があります。

于 2008-08-26T19:52:57.833 に答える