![]() |
FileNotification-Callback, Thread und eine kleine Schleife
Hallo Ihr Delphianer,
ich habe gerade eine kleine, aber feine Aufgabe auf den Tisch bekommen und versuche diese zu lösen. Vielleicht könnt Ihr mir ein bißchen behilflich sein. Ich werde das mal versuchen, das vereinfacht darzustellen. Also: Ich habe mehrere Kanäle (Threads) und jeder Kanal hat eine FileNotification-Instanz, die eine Callback-Funktion erhält. Die Callback-Funktion ist wie folgt deklariert:
Delphi-Quellcode:
function FnChgCallBack( ENTClientHandle : HFNCHG; InfoData : PFNCHG_FILE_INFORMATIONA ) : Boolean; stdcall;
Delphi-Quellcode:
Der else-Zweig ist übrigends falsch. Der läuft immer bis 10000.
function TChannelThread.FnChgCallBack(ENTClientHandle: HFNCHG; InfoData: PFNCHG_FILE_INFORMATIONA): Boolean;
var _count : integer; _fertig : boolean; _out : String; _sLog : String; begin result := True; _count := 0; _fertig := false; while (not _fertig) and (_count < 10000) do begin inc(_count); _out := GetOldestFile(FFileChangeNotification.FolderFilter); if _out <> '' then begin _sLog := format('Msg-Datei zur Bearbeitung gefunden --> %s ',[FInputDirectory+ _out]); WriteLogAndForm(_sLog, INFOLEVEL); Parse_Msg(_out); end else _fertig := false end; end; Kommen wir mal zu meinen Fragen: Was passiert mit dem Thread (oder der function) wenn die Schleife noch läuft und ein erneuter Callback reinkommt? Kann es eigentlich reibungslos funktionieren mit dem Callback oder muß ich den Trick von Lucky ![]() In unserem Fall läuft der Dienst nach einiger Zeit zwar noch, aber die Kanäle arbeiten nicht mehr wirklich. Ich habe den verdacht, daß sich der Fehlerteufel (Entwickler) in dem oben beschriebenen Abschnitt befindet. Viele Fragen, aber ich hoffe auf viele Antworten. Vielen Dank im Vorraus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 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