Vollständige Version anzeigen : [C#] Auf Prozess / Datei warten


Neo311087
18.11.2013, 21:51

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

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Murdoc
19.11.2013, 09:19

Selber Prozess (Threads):
Mutex-Klasse (System;Threading) (;msdn;microsoft~com/de-de/library/system;threading;mutex%28v=vs;110%29;aspx)

Mehrere Prozesse:
FileStream;Lock Method (;msdn;microsoft~com/en-us/library/system;io;filestream;lock(VS;71);aspx)
FileStream;Unlock Method (;msdn;microsoft~com/en-us/library/system;io;filestream;unlock(VS;71);aspx)


Neo311087
19.11.2013, 10:01

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... :/


Calyx
19.11.2013, 21:14

Ein primitiver Synchronisierungstyp, der auch für die prozessübergreifende Synchronisierung verwendet werden kann.
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

// 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();


Ähnliche Themen zu [C#] Auf Prozess / Datei warten
  • AV Prozess killen
    hi ich versuche irdengdwie ServUDaemon;exe zum laufen zu zu zu bringen nur leider startet Prozess kurz und wird beendet pslist: Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time Idle 0 0 4 0 0 119:03:22;625 38:05:36;134 System [...]

  • Kazaa-prozess
    Was willste mit Kazaa wenn man Bearshare haben kann ;-) Naja, hoffen wa mal das sie nicht alt so viel zahlen müssen. Greetz Joel104 [...]

  • prozess
    hidden32 versteckt den prozess ned, sondern macht nur, dass der sich ned aufpoppt. wennde nen prozess wirklich verstecken willst ausm taskmngr, dann musste dir hxdef beschaffen oder winrootkit.. google hilft zum renamen: schnapp dir nen hexeditor und änder halt den processname.. [...]

  • [mssql] welcher prozess kill mein prozess
    moin hab mir einen remote stro gehax0rt aber irrgendwie wird mein prozess immer gekillt. Nach 2 sekunden scannen hört er einfach auf. vl könnt ihr mir ja helfen. FPort v2;0 - TCP/IP Process to Port Mapper Copyright 2000 by Foundstone, Inc. (;;;foundstone~com) Pid Process Port Pro [...]



raid-rush.ws | Imprint & Contact pr