Filestream C#

Gast #4050685
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?
Gast #4050718
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.
Gast #4050728
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.
Gast #4050729
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,

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren