[C#] Auf Prozess / Datei warten

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

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #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. Anzeige
  3. #2 19. November 2013
  4. #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... :/
     
  5. #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();
    
     

  6. Videos zum Thema
Die Seite wird geladen...