Einzelnen Beitrag anzeigen

Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Warten bis Datei geschlossen ist

  Alt 24. Mär 2010, 07:38
Hast Du denn Einfluss auf den Emulator, soll heissen kommst Du an dessen Quelltexte dran und kannst ihn modifizieren? Wenn nein, vergiss die Beschreibung unten OK, beim zweiten Lesen der Ursprungsnachricht - ja, hast Du

Ohne das Betriebssystem zu arg zu stressen lösen wir das mit dem Schreiben einer Semaphorendatei, welche vor dem Erstellen der Inhaltsdatei erstellt wird und eine andere Dateiendung, aber den gleichen Namen hat. Diese Dateiendung wird vom Einleser nicht verarbeitet.

Dann lädt der Schreiber seine Daten in der eigentlichen Datendatei ab. Solange parallel noch die Semaphorendatei existiert, wird noch nicht ausgelesen. Ist der Schreiber fertig, löscht er diese Datei - es wird wieder ein DirectoryChange ausgelöst - und der Inhalt wird anschliessend vom auslesenden Programm verarbeitet, weil die Semaphorendatei nicht mehr existiert.

Insgesamt werden dabei 3-4 DirectoryChanges ausgelöst

1.) Semphorendatei wird erstellt - die wird sowieso nicht verarbeitet
2.) Datendatei wird erstellt und mit Daten befüllt - wird nicht verarbeitet, weil parallel noch die 1.) Datei existiert
3.) Semphorendatei wird gelöscht -> ok, dann ist der Schreiber fertig und die Daten können ausgelesen werden
4.) ggf. Löschen der Datendatei

Nur nicht unbedingt multithreadingfähig, es sei denn die Threads tauschen sich aus, was sie gerade am verarbeiten sind.
Carsten
  Mit Zitat antworten Zitat