doppelte events bei FindFirst/NextChangeNotification



  • hola leute

    fuer ne kleine synchronisation einer DBase datenbank hab ch mir nen thread gebastelt, der vom system ne benachrichtigung bekommen soll, wenn in einem bestimmten ordner eine datei beschrieben, geaendert oder ueberschrieben worden ist. funktioniert an sich tadellos. jedoch bekomme ich immer 2 events.

    hier mal bissl code

    void __fastcall WatchThread::Execute()
    {
       Form1->events[1] = FindFirstChangeNotification(ExtractFilePath(Form1->Dateiname->Text).c_str(),
                                                      false, FILE_NOTIFY_CHANGE_LAST_WRITE);
       bool stop = false;
       unsigned int event_no = 0;
       Form1->Memo1->Lines->Add("Watch-Thread wurde gestartet");
    
       while(!stop)
       {
          event_no = WaitForMultipleObjects(2, Form1->events, false, INFINITE);
    
          switch(event_no)                         
          {
             case 0:
                stop = true;
                break;
    
             case 1:
                Sleep(500);
                ResetEvent(Form1->events[1]);
                Form1->Memo1->Lines->Add("Datei wurde veraendert");
                if(!FindNextChangeNotification(Form1->events[1]))
                {
                   stop = true;
                   Form1->Memo1->Lines->Add("Fehler: FindNextChangeNotification");
                }
                break;
          }
       }
    
       FindCloseChangeNotification(Form1->events[1]);
       Form1->Memo1->Lines->Add("Watch-Thread wurde beendet");
       delete this;
    }
    

    sobald ich die datei ueberschreibe oder so, bekomme ich

    Fehler: FindNextChangeNotofication
    Fehler: FindNextChangeNotofication
    

    als ausgabe in meinem memo. is das normal so ?

    Meep Meep


Anmelden zum Antworten