5

ファイル システム内のフォルダーを監視したいと考えています。フォルダーを監視したいとしましょう: C:\MyNewFolder

私はそれを行うためにこのコードを持っています:

HANDLE  ChangeHandle=FindFirstChangeNotification(_T("C:\\\MyNewFolder"),FALSE,FILE_NOTIFY_CHANGE_LAST_WRITE);
for(;;)
{
    DWORD Wait=WaitForSingleObject(ChangeHandle,INFINITE);
    if (Wait == WAIT_OBJECT_0)
    {
        MessageBox(NULL,_T("Change"),_T("Change"),MB_OK);
        FindNextChangeNotification(ChangeHandle);
    }
    else
    {
        break;
    }
}

フォルダー内のファイルの変更について通知するメッセージボックスが必要です。そのコードは正常に動作しますが、1 つ問題があります。問題は、変更ごとに 2 つの通知を受け取ったことです。私のコードの問題は何ですか? ありがとう。

4

2 に答える 2

2

おそらく、1 つのファイルに複数の変更が加えられていることがわかります (たとえば、ファイルが作成されてから書き込まれる、またはファイルが複数回書き込まれるなど)。残念ながらFindFirstChangeNotification、実際に何が起こったのかはわかりません。

が変更されたかReadDirectoryChangesWを実際に通知するため、ファイル通知に使用することをお勧めします。

于 2013-04-07T20:15:48.930 に答える