![]() |
ReadDirectoryChangesW beenden
Hallo DP.
Ich habe ein Problem mit ReadDirectoryChangesW. Ich habe ![]() Ich habe es genauso gemacht wie es "Ganymed" in dem Thread auch beschieben hat und bekomme die gleichen Probleme :wall: Please Help :coder: Ps. Ich benutze Turbo Delphi und an sich brauche ich auch nur ein Event das sagt das sich etwas geändert hat die Änderung im spezielllen ist nicht wichtig. Gruß Sportkeks |
AW: ReadDirectoryChangesW beenden
Und push :bounce1:
|
AW: ReadDirectoryChangesW beenden
Teilst du diesem Thread auch mit, daß er sich beenden soll, bzw. wie/wo gibst du die Thread-Instanz frei?
|
AW: ReadDirectoryChangesW beenden
Die Thread Instanz wird in der Komponente frei gegeben sobalt TFldrControl.StopThread aufgerufen wird. Das ganze sieht dann bei mir so aus:
Delphi-Quellcode:
Beim stoppen tritt eine Zugiffsverletzung auf:
oFolderControler:TFldrControl;
procedure TForm1.Change(Folder: String; Action: Integer); begin Memo1.Lines.Add(Folder+' '+inttostr(Action)); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin oFolderControler.StopThread; oFolderControler.Free; inherited; end; procedure TForm1.FormCreate(Sender: TObject); begin oFolderControler := TFldrControl.Create(Owner); oFolderControler.Folder := 'D:\Test'; oFolderControler.OnGetResult := change; oFolderControler.StartThread; end;
Delphi-Quellcode:
Kann das jemand anders vllt mal testen, oder kann mir jemand sagen wie ich einen Thread der bei "ReadDirectoryChangesW(...)" auf eine antwort wartet, also bis eine Datei verändert wird, "weiter laufen" lassen kann ohne das eine Datei verändert wird ?
destructor CtrlThread.Destroy;
begin // diverse Handles freigeben try if FhFile <> INVALID_HANDLE_VALUE then CloseHandle(FhFile); CloseHandle(FileEvent); <---------------------- hier kommt ein exception TermEvent.Free; SuspEvent.Free; except end; end; Hier ein Beispiel:
Delphi-Quellcode:
Ich hoffe Ihr wisst was ich meine :cyclops:
while not terminated do begin
if ReadDirectoryChangesW(FhFile,pBuf,dwBufLen,true, <------- |Der Thread wartet hier solange FILE_NOTIFY_CHANGE_FILE_NAME or ---|bis eine Datei geändert wird egal FILE_NOTIFY_CHANGE_DIR_NAME or ----|ob man ihn terminiert, er bleibt FILE_NOTIFY_CHANGE_LAST_WRITE, ----|hier stehen.... @dwRead,nil,nil) then begin Synchronize(proc); end else begin break; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz