ReadDirectoryChangesW loest mehrfach trigger aus...



  • Hallo zusammen!

    Ich benutze grad ReadDirectoryChangesW zum überwachen eines Ordners. Wenn ich dort jedoch eine datei z.B. kopiert, wird gleich 2 mal die funktion im handler ausgeführt. keine ahnung warum. Ich verwende folgende notify parameter:

    FILE_NOTIFY_CHANGE_LAST_WRITE
    FILE_NOTIFY_CHANGE_CREATION

    komisch das ganze!

    wenn ich CREATION raus nehme, wird es trotzdem zwei mal ausgelöst. bin total überfragt, warum LAST_WRITE zwei mal triggert, wenn ich eine datei änder oder kopier. mach ich was falsch?

    LG



  • Wir brauchen mehr Code... 😃



  • geht klar 🙂

    class CMyDirectoryChangeHandler : public CDirectoryChangeHandler
    {
    public:
          	CMyDirectoryChangeHandler(){}
          	virtual ~CMyDirectoryChangeHandler(){}
    
    protected:
    	void On_FileModified(const CString &strFileName)
    	{
    
    		cout << "geht\n";
    	}
    };
    
    int main()
    {
    		CMyDirectoryChangeHandler	handler;
    		CDirectoryChangeWatcher		watcher(false);
    
    		////////////////////////////////////////
    		DWORD dwChangeFilter = 0UL;
    		dwChangeFilter |= FILE_NOTIFY_CHANGE_LAST_WRITE;
    		dwChangeFilter |= FILE_NOTIFY_CHANGE_CREATION;
    		////////////////////////////////////////
    
    		watcher.WatchDirectory(_T("C:\\POLLTEST\\EXPORT1"),
                                     dwChangeFilter,
                                     &handler,
                                     TRUE,		//<-- watch sub directories?
    								 NULL,		//<-- Include Filter
    								 NULL);		//<-- Exclude Filter
    		while(1){}
    }
    

    leider sehr unübersichtlich. ich verwende einen wrapper den ich ausm netz hab. der verwendet wiederrum die winapi funktion. ich selbst sprech sie aber leider net an.


Anmelden zum Antworten