FileSystemWatcher bekommt nicht alle events mit

24/01/2009 - 10:15 von Nils Keller | Report spam
Hallo,

ich habe eine kleien anwendung gebaut die auf einem Pfad via
FileSystemWatcher Created event das erstellen von Steuern Dateie mit
bekommen soll und die Steuerdateie dann verarbeitet.
Der verarbeitungs Vorgang dauert ca. 10 bis 35 Sekunden.
Was mir nun auf gefallen ist das meine Anwendung nicht alle Dateien
verarbeitet.
Das scheint auf zu tretten wenn paralell 25 Dateien grade verarbeitet werden
und wàrend dessen weitere Dateien zum verarbeiten rein kommen.
Was kann man machen das ich mti dme FileSystemWatcher zuverlàssig alle
Dateien erhalte?
Oder muss ich doch auf die Alt bewàhrte Method zurückgreifen und mit
Zyklisch eine Verzeichnislsite holen und die abarbeiten?

Liebe Grüße,

Nils
 

Lesen sie die antworten

#1 Frank Dzaebel
24/01/2009 - 12:43 | Warnen spam
Hallo Nils,

[...] FileSystemWatcher Created event [...]
Das scheint auf zu tretten wenn paralell 25 Dateien grade verarbeitet
werden und wàrend dessen weitere Dateien zum verarbeiten rein kommen.



Erhöhe ggf. durch die InternalBufferSize-Eigenschaft die Puffergröße.
Damit kannst Du verhindern, dass Dateisystemànderungs-Ereignisse
verpasst werden. Das Erhöhen der Puffergröße ist allerdings aufwàndig,
da Systemspeicher genutzt wird, der nicht auf die Festplatte ausgelagert
werden kann. Der Puffer sollte deshalb so klein wie möglich gehalten
werden, aber dennoch groß genug, um alle gewünschten
Dateiànderungsergebnisse erfassen zu können.

[FileSystemWatcher-Klasse (System.IO)]
http://msdn.microsoft.com/de-de/lib...tcher.aspx

- Halte den Ereignisbehandlungscode (etwa von: Created) so kurz
wie möglich. Ggf. in Threads auslagern.

- Es ist vorteilhaft, Dateien mit kurzen Dateinamen zu überwachen.

- Vermeide für dieses Szenario möglichst das Setzen der
IncludeSubdirectories-Eigenschaft auf true.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen