Forum: PC-Programmierung Filestream C#


von Entwickler (Gast)


Lesenswert?

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?

von t_k (Gast)


Lesenswert?

Entwickler schrieb:
> Was könnte ich nun tun,
> sobald der Backgroundworker auf die gleiche Datei zugreifen möchte?

die Datei vorher schliessen

von Entwickler (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von nicht"Gast" (Gast)


Lesenswert?

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,

von t_k (Gast)


Lesenswert?


von Entwickler (Gast)


Lesenswert?

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?

von bluppdidupp (Gast)


Lesenswert?

Mit FileStream.SetLength die Dateigröße auf 0 setzen

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
Noch kein Account? Hier anmelden.