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
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
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.