VisualBasic Gleichzeitiger Zugriff auf eine Datei

HuBaer

Ensign
Dabei seit
Aug. 2006
Beiträge
161
Hallo allerseits,

ich benutze VisualBacic-Script. Dabei hat sich folgendes Problem ergeben: Angenommen ich will eine Datei öffnen, in diese etwas hineinschreiben und sie wieder schließen. Dann klappt das einwandfrei. Sobald jedoch der Fall auftritt, dass zwei gestartete Scripts gleichzeitig in die Datei etwas schreiben wollen, bekommt das Script einen Laufzeitfehler, das die Datei öffnen will, nichtbeachtend, dass ein anderes Script im Moment auf die Datei zugreift.

Könnt ihr mir weiterhelfen? Ich bin in einer Befehlreferenz auf den Befehl "FreeFile()" gestoßen. Hilft mir dieser weiter? Ich benutze in meinen Scripts für Dateioperationen das FileSystemObject.

Vielen Dank im Voraus und ein schönes Wochenende!

Gruß
Christoph
 

Simpson474

Fleet Admiral
Dabei seit
Sep. 2006
Beiträge
12.620
Gleichzeitig in eine Datei schreiben ist eigentlich immer schlecht. Wer soll denn da den Schreibvorgang gewinnen, an welche Stelle wird geschrieben wenn wirklich beide Scripte gleichzeitig schreiben? Aus diesem Grund unterbindet Windows das gleichzeitige Schreiben. Was willst du denn genau machen?
 

HuBaer

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2006
Beiträge
161
Bei dem Script handelt sich um eines, das Feuerwehralarm-SMS über ein Internet-Gateway verschickt. Damit die SMS schneller verschickt werden werden immer mehrere Scripte parallel gestartet (wobei jedes Script 5 Nummern übernimmt). Bei den Dateioperationen handelt sich sich zuerst einmal um eine einfache Logdatei, in die jedes Script hineinschreibt welche Nummer, welcher Text, Versand erfolgreich usw. Eine Logdatei halt ;) Bis jetzt hatte ich es so gelöst, dass jeder Prozess eine temporäre Datei anlegt, in die er seinen Versandbericht schreibt. Ein im Hintergrund laufender Prozess sammelt diese Berichte dann und schreibt sie nacheinander in die Logdatei. Find ich halt bisschen kompliziert und bin deshalb am Überlegen, wie man das einfacher gestalten könnte...

Ich hätte jetzt nicht gedacht, dass ich dabei auf so große Probleme stoßen würde. Schließlich haben es ja sogar stinkeinfache Batch-Dateien (die ich vor dem VB-Skript verwendet habe) drauf, gleichzeitig in eine Datei zu schreiben bzw. so lange zu warten, dass es zu keinem Konflikt kommt ;)

Gruß
Christoph
 

Simpson474

Fleet Admiral
Dabei seit
Sep. 2006
Beiträge
12.620
Das Warten sollte schon möglich sein, so viel ich weiß hat VB-Script auch die selten blöde Fehlerbehandlung von VB mit "on error goto" oder "on error continue next". Einfach mal danach googlen, damit solltest du im Falle eines Fehlers einfach das ganze so oft wiederholen können, bis das andere Script die Datei geschlossen hat.

So viel ich weiß macht es Linux ähnlich wie dein vorheriger Ansatz war. Ein Hintergund-Prozess bekommt alle Log-Informationen zugespielt und dieser schreibt dann in die Log-Datei.
 
1

1668mib

Gast
Bei PHP/Perl hat man sich auch solcher Dinge bedient:
Man erstellt eine temporäre Datei, so lange diese spezielle Datei existiert, heißt das, ein Script läuft und man kann also so die Datei nicht öffnen...

Am Anfang des Scripts wird also gewartet, bis die Datei (z.B. lock.txt) nicht mehr exisitert, und dann wird sie erstellt.
Am Ende des Scripts wird die Datei dann wieder gelöscht.
 

davidbaumann

Commodore
Dabei seit
Aug. 2004
Beiträge
4.864
Hmm kannst du nicht eine MySQL-Datenbank oder so verwenden?
Das wäre eigentlich optimal und sollte nicht allzu umständlich sein.
Und da kannst du mit so vielen Prozessen gleichzeitig auf die DB zugreifen, bis der PC abschmiert.

Da könntest du dann auch die Nummern reinspeichern, an die gesendet werden soll...
 
Top