1

rtf ファイルを監視して、しばらくの間 (たとえば 15 分) 更新されているかどうかを確認するにはどうすればよいですか。更新されていない場合は、ファイルが更新されていないことをメイン スレッドに知らせます。WaitforSingleObject 関数を使用して、過去 15 分間の変更を待機することを考えています。この機能をどのように実装できますか?

4

4 に答える 4

4

探しているのは 、 などのファイル変更通知FindFirstChangeNotificationFindNextChangeNotificationReadDirectoryChangesW思います。ファイルまたはディレクトリの変更、名前変更、書き込みなどを監視します。

于 2013-08-30T07:16:39.180 に答える
2

WaitForSingleObject に言及しているため、おそらくプラットフォームは Windows です。その場合、探している関数はReadDirectoryChangesWです。これにより、ポーリングを実行しなくても、変更が行われるとすぐに通知を受けることができます。

Jim Beveridge は、ある程度深く掘り下げた優れた 2 つの記事を書いています。

于 2013-08-30T07:17:42.370 に答える
0

私の意見では、これは 2 つの方法で達成できます。ファイルの書き込み操作を監視できるファイル フィルター ドライバーを作成できます。ただし、これは少しストレッチです。

もう1つの方法は簡単です。メイン スレッドで、RTF ファイルのハッシュを作成してキャッシュします。非シグナル状態のイベントを作成し、コールバック関数を作成し、ワーカー スレッドを作成します。イベントのワーカー スレッドで 15 分間待機します。タイムアウト後、ファイルのハッシュを再度生成し、キャッシュされたハッシュと比較します。不一致の場合は、コールバック関数を介してメイン スレッドに通知します。

于 2013-08-30T07:36:05.930 に答える