Vista: Dateizugriff langsamer?
Hallöchen,
ich habe mal wieder ein kleines Problem mit Vista: - 2 kleinere Anwendungen tauschen sich via einer simplen Textfile aus - Anwendung 1 schreibt alle 500ms in das Textfile (max. 20 Zeilen) - Anwendung 2 liest alle 510 ms das Textfile (Den kleinen Zeitversatz habe ich eingebracht, falls beide Anwendungen gleichzeitig gestartet würden.) Anyway, unter 98-XP funktioniert das wunderbar. Unter Vista blockiert die Anwendung 2 das Schreiben der Anwendung 1. Beende ich Anwendung 2, kann Anwendung 1 wieder wunderbar schreiben. Ist Vista hier nur langsamer? Oder hat das evtl. noch andere Ursachen? Grüße, Graffi |
Re: Vista: Dateizugriff langsamer?
Zum einem würde ich das nicht so synchronisieren, da Timer-Nachrichten keine sehr hohe Priorität im System haben, es ist also nicht garantiert, dass das Timer-Ereignis auch immer "pünktlich" ausgelöst wird. Windows ist eben kein Echtzeit betriebssystem. Zum anderen, wie öffnest du die datei und schließt du sie auch wieder, damit sie von der anderen Anwendung zum Lesen geöffnet werden kann.
Zum Datenaustausch würde ich mir andere Möglichkeiten der Interprozesskommunikation überlegen. Du kannst es ruhig mit Dateien machen, aber dann würde ich der anderen Anwendung eine Nachricht schicken, wann sie lesen kann. Für kleine Datenmengen eigent sich auch die Nachricht WM_COPYDATA. Ansonsten würde ich mich mal nach MemoryMappedFiles oder (Named)Pipes oder Mailslots umgucken. |
Re: Vista: Dateizugriff langsamer?
Zitat:
a) Timer laufen nicht genau und auch nicht verlässlich. Es ist vorgegeben, dass der Timer dann frühestens alle 500 ms ausgelöst wird, es können aber auch mal 800 ms oder 1200 ms sein, wobei es nie 400 ms sein werden. b) Anwendung2 überhplt irgendwann Anwendung1. Dann wird ein Zyklus nicht gelesen, sondern übersprungen. Als Lösung würde ich NamedPipes vorschlagen. Da kann Anwendung2 warten, bis Daten ankommen und diese dann auslesen. Vorteile: - nur ein Timer, diesen vielleicht noch durch Delay ersetzen - Anwendung1 bekommt die volle Steuerung - Anwendung2 muss nur reagieren, wenn wirklich Daten kommen Überdenke also das Software-Design nochmal. Man kann alles irgendwie besser lösen. |
Re: Vista: Dateizugriff langsamer?
Das habe ich doch gestern schon alles geschrieben. :gruebel:
|
Re: Vista: Dateizugriff langsamer?
Zitat:
/ironie Und ausserdem will ich die 3000 vollmachen, bevor ich mich verabschiede ;-) |
Re: Vista: Dateizugriff langsamer?
Hier ist noch mal ein Beispiel für Interprozesskommunikation mit MemoryMappedFiles:
http://www.michael-puff.de/Developer...ppets/MMF.html |
Re: Vista: Dateizugriff langsamer?
Danke euch Zweien für die guten Antworten.
Meine Timerlösung ist zwar nicht das Gelbe vom Ei, aber hat bislang völlig ausgereicht, da absolut nicht zeitkritisch. @Luckie Lesen und Schreiben des Textfiles mache ich derzeit über:
Delphi-Quellcode:
Wie schon gesagt, unter 98-XT macht das überhaupt keine Probleme.tf : textfile; s : string; //Schreiben - Anwendung 1 try assignfile(tf,PStatus+'info.txt'); rewrite(tf); writeln(tf,s); ... closefile(tf); except //showmessage('Fehler'); end; //Lesen - Anwendung 2 begin Result := false; try assignfile(tf,pstatus+'info.txt'); reset(tf); readln(tf,s); ... closefile(tf); Result := true; except Result := false; end; end; Gruß Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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