![]() |
SaveToFile synchron oder asynchron?
Hi,
wie der Betreff sagt, würde ich gerne wissen ob mein programm sofort nach Aufruf der SaveToFile- Prozedur weiterläuft, oder ob es erst wartet, bis SaveToFile beendet wurde. Denn ich würde nachdem ich eine Ansammlung von Daten in eine Datei geschrieben hab einer anderen Anwendung mitteilen, dass sie jetzt mit der Datei weiterarbeiten kann. Das andere Programm kann das ja nich wirklich überprüfen, denn FileExists funktioniert ja auch wenn die Datei noch garnicht zu Ende geschrieben wurde. Und das andere Programm kann dann ja nicht anfangen zu lesen, wenn noch geschrieben wird... Also dann, sagt mir bitte was diesbezüglich Sache ist, und in welchem der beiden von mir oben genannten Fälle das Ganze synchron oder asynchron wäre ;-) Wenns zu meinen Ungunsten stehen würde, was gäbe es für Alternativen um rauszufinden, wann SaveToFile fertig ist? Bis dann, S - tefano |
Moin Stefano,
SaveToFile wird irgendwann einmal CreateFile intern aufrufen müssen. Du könntest also mal die Sourcen durchgehen und Dir ansehen wie SaveToFile arbeitet. Bei Deiner Version sollten die Sourcen der VCL ja dabei sein. |
Re: SaveToFile synchron oder asynchron?
Zitat:
...:cat:... |
Hi,
also im Endeffekt scheints darauf hinauszulaufen:
Delphi-Quellcode:
Hm.
Write(Buffer, Count);
Da fällt mir gerade was ein, wie sich das alternativ machen lassen würde: Ich könnte doch mit ner For-Schleife die Elemente (sind Strings) durchgehen und jedes per writeLn in eine Datei schreiben. Also so mit vorher assignfile, rewrite und so. Sowas hat sich bis jetzt eigentlich immer mit ner Schleife lösen lassen. Also scheint das Prog hier erst nach dem Fertigstellen von writeLn weiterzulaufen, was mir garantiert, dass der Schreibvorgang nach der Schleife auch wirklich beendet ist. Oder? Bis dann, S - tefano |
Ist das gleiche wie beim Stream, es wird erst einmal zum Cache gesandt und ist wahrscheinlich sogar langsamer, da Stream dahingehend optimiert sind.
...:cat:... |
Hmmmmmm
Mist, jetz hab ich die Prozedur aber schon fertig, all der Code umsonst? Nein :!: Juchuuu! Bei meiner Methode kann ich Fehler durch ioresult besser "handlen". Hoff ich jedenfalls... Die einzelnen Stings die ich abspeichere sind auch sowieso nicht allzu lang, höchstens mal 20 Zeichen, aber es sind halt sehr viele. Und bei der heutigen Hardware... danke. Bis dann, S - tefano |
Moin Stefano,
Zitat:
|
Ach Mist.
Scheint keinem was einzufallen um zu argumentieren dass ich meine eigene Prozedur nehmen sollte. Naja, mal außer der Tatsache dass die Mühe dann umsonst gewesen wäre. Naja. Aus diesem Grund werde ich jetz einfach meine Prozedur benutzen und alles ignorieren was dagegen spricht :corky: Danke nochmal, S - tefano |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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