[C#] Auf Prozess / Datei warten

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Neo311087, 18. November 2013 .

Schlagworte:
  1. 18. November 2013
    Hallo zusammen,

    Ich hab ein kleines Programm geschrieben welches übergebene Parameter in eine Datei schreibt.
    Das Problem: Dieses Programm wird sehr oft parallel aufgerufen und soll immer in die gleiche Datei schreiben. Gleichzeitige Dateizugriffe (zum schreiben) rufen jedoch Exceptions auf. Ich hab im Netz leider keine Lösungen gefunden welche für mich funktioniert, vielleicht habt ihr eine Idee?

    Was ich schon probiert habe: try / catch in eine Funktion die sich immer wieder selber aufruft ( mit Sleep Time dazwischen ). In eine Datei schreiben über cmd /c echo bla >> bla.txt. Leider hat nichts funktioniert.

    Viele Grüße

    Neo
     
  2. 19. November 2013
    AW: [C#] Auf Prozess / Datei warten

    Selber Prozess (Threads):
    Mutex-Klasse (System.Threading)

    Mehrere Prozesse:
    FileStream.Lock Method
    FileStream.Unlock Method
     
  3. 19. November 2013
    Zuletzt bearbeitet: 19. November 2013
    AW: [C#] Auf Prozess / Datei warten

    Ok Mutex ist es doch nicht, der Prozess startet mehrmals parallel...
    Das ich Locken und Unlocken kann ist schön aber ich möchte es ja nicht einfach hinnehmen, sondern möchte das er es wieder probiert. Mit einer Schleife haut es leider auch nicht hin... :/
     
  4. 19. November 2013
    Zuletzt bearbeitet: 19. November 2013
    AW: [C#] Auf Prozess / Datei warten

    Kenn mich in C# nicht wirklich aus, aber Mutex ist da allgemein das Mittel der Wahl. Du kannst doch vor dem Schreiben überprüfen, ob die Datei gelockt ist und dann halt solange warten, bis sie wieder freigegeben wurde. Musst nur aufpassen dass kein Deadlock entsteht, falls eine Programminstanz abraucht, während sie in die Datei schreibt.

    Pseudocode
    Code:
    // warten bis der andere Prozess die Datei freigibt
    while (Mutex.isLockedByAnotherProcess()) {
     sleep(1000ms);
    }
    
    // exklusiven Zugriff sichern, Daten schreiben und Zugriff wieder aufheben
    Mutex.lock();
    writeStuffToFile();
    Mutex.unlock();
    
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.