Hi, in meiner Anwendung wird zyklisch Daten mit Filestream in eine Textdatei gespeichert. Der zyklische Vorgang läuft in einem Windows.Forms.Timer. Nun habe ich noch einen Backgroundworker, der nach einer gewissen Zeit ebenfalls auf die gleiche Datei speichernd mit Filestream zugreift. Nun entsteht natürlich ein Exception in dem Backgroundworker, der sagt, dass die Datei bereits zum speichern geöffnet wurde. Was könnte ich nun tun, sobald der Backgroundworker auf die gleiche Datei zugreifen möchte?
Entwickler schrieb: > Was könnte ich nun tun, > sobald der Backgroundworker auf die gleiche Datei zugreifen möchte? die Datei vorher schliessen
Ok das wäre natürlich eine Lösung. Ich habe mir noch folgendes überlegt, allerdings scheitert dies bei der programmiertechnischen Umsetzung. Ich könnte auch ein Event an den Wibndows.Forms.Timer senden. Wie könnte in C# ein Event generiert, ausgelöst und gelöscht werden? Ich habe mal was von Action gehört.
Entwickler schrieb: > Ok das wäre natürlich eine Lösung. Ich habe mir noch folgendes überlegt, > allerdings scheitert dies bei der programmiertechnischen Umsetzung. Ich > könnte auch ein Event an den Wibndows.Forms.Timer senden. Wie könnte in > C# ein Event generiert, ausgelöst und gelöscht werden? Ich habe mal was > von Action gehört. wozu der aufwand? du musst doch nur auf das gleiche Filestream objekt zugreifen. Du musst nur extra noch dafür sorgen, das nicht von beiden stellen gleichzeitig geschrieben wird.
Moin, das ist relativ einfach. Du "lockst" den Zugriff auf die Datei
1 | // muss für beide code teile das gleiche sein |
2 | object lockObject = new Object(); |
3 | |
4 | lock(lockObject){ |
5 | // datei schreiben hier |
6 | } |
7 | |
8 | lock(lockObject){ |
9 | // datei lesen in einem anderen Thread hier |
10 | } |
Grüße,
Vielen Dank! Die lock Variante habe ich nun mal eingesetzt. Wie könnte man auf einfache Weise mit Filestream oder STreamWriter den Dateiinhalt einer Datei komplett löschen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.