Einzelnen Beitrag anzeigen

soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#1

"FindFirstChangeNotifikation" neu anstoßen

  Alt 9. Jun 2010, 15:48
hoi,

ich benutze folgenden Funktion in einem thread.
(die Funktion habe ich von hier)

Delphi-Quellcode:
function RegisterDirectoryWatch(Params:Pointer): Boolean;
var
  hHnd : THandle;
  dwWait : DWORD;
  Parameter : TThreadParameter ;
begin
  Parameter := PThreadParameter(Params)^ ;
  Dispose(PThreadParameter(Params));
  Result := False ;
  
  if (Parameter.Pfad <> EmptyStr) then // bei gueltiger Pfadangabe ...
  begin
    hHnd := FindFirstChangeNotification ( PChar(Parameter.Pfad), // Pfad
                                          False, // keine Unterverz.
                                          FILE_NOTIFY_CHANGE_FILE_NAME); // Flag

    if hHnd = INVALID_HANDLE_VALUE then // bei Fehler -> Abbruch
     begin
       Result := False;
     end
    else
     begin
       while TRUE do // warte
       begin
         dwWait := WaitForSingleObject(hHnd, INFINITE);
         case dwWait of
           WAIT_OBJECT_0: // hab was gefunden
             begin
               if FileExists( Parameter.Pfad + Datei) then // ist die eine datei vorhanden ?
               begin
                 SuspendThread(MyThreadID) ; // thread unterbrechen

                 //...
                 // weitere Verarbeitung
                 //...
                 
                 DeleteFile( Parameter.Pfad + Datei); // datei loeschen
                 
                 if ThreadStoppen then // threadstoppen = boolean ; wird global gesetzt
                    Exit
                 else
                   begin
                     // ...
                     // weiter schauen <---- wie gehts weiter ? die suche soll weiter gehen
                     // ...

                     ResumeThread(MyThreadID);
                   end;

               end;
             end;
         end;
       end;
     end;
    FindCloseChangeNotification(hHnd) ;
  end;
end;
Problem: Ich weiß nicht wie ich es umsetzen muss damit die funktion weiterarbeitet nachdem z.B.
einmal die Datei gefunden wurde. Ich will "nur" ein neues anstoßen bewirken.


cya
  Mit Zitat antworten Zitat