AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FileNotification-Callback, Thread und eine kleine Schleife
Thema durchsuchen
Ansicht
Themen-Optionen

FileNotification-Callback, Thread und eine kleine Schleife

Ein Thema von PhilCore · begonnen am 20. Sep 2011
Antwort Antwort
PhilCore

Registriert seit: 15. Jun 2005
Ort: Neumünster
21 Beiträge
 
Delphi 2006 Enterprise
 
#1

FileNotification-Callback, Thread und eine kleine Schleife

  Alt 20. Sep 2011, 12:15
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:
function FnChgCallBack( ENTClientHandle : HFNCHG; InfoData : PFNCHG_FILE_INFORMATIONA ) : Boolean; stdcall;
Delphi-Quellcode:
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;
Der else-Zweig ist übrigends falsch. Der läuft immer bis 10000.
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 http://www.michael-puff.de/Programmierung/Artikel/CallbackMethod.shtml verwenden, um ein sicheres Ergebnis zu bekommen?

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
Thorsten
Erzähl mir nicht, wie man verliert.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz