Timer startet nicht

13/10/2008 - 21:36 von Gabi Fruhner | Report spam
Hallo,

füge in einem FileSystemWatcher Eventhandler einer Klasse (keine Form) den
Namen einer erstellten/geànderten Datei einer ArrayList hinzu und möchte die
weitere Verarbeitung gepuffert mittels Timer realisieren. Habe den Timer
bereits im Konstruktor erstellt und möchte ihn aber erst im Eventhandler,
wenn ArrayList.Count = 1, mit Timer.Start starten und dann im Timer
Eventhandler, wenn alle Items der ArrayList verarbeitet wurden, wieder
stoppen.
Allerdings startet der Timer nicht und ich nehme an, es hat damit zu tun,
dass der Event eines FileSystemWatchers in einem anderen Thread ausgelöst
wird.
Wie kann man sowas lösen ?

Danke

Gabi
 

Lesen sie die antworten

#1 Peter Götz
14/10/2008 - 08:37 | Warnen spam
Hallo Gabi,

füge in einem FileSystemWatcher Eventhandler
einer Klasse (keine Form) den Namen einer
erstellten/geànderten Datei einer ArrayList hinzu
und möchte die weitere Verarbeitung gepuffert
mittels Timer realisieren.



Diese Beschreibung gibt für jemanden der Deinen
Programmzweck und Programmablauf nicht kennt
wenig her.


Habe den Timer bereits im Konstruktor erstellt und
möchte ihn aber erst im Eventhandler, wenn
ArrayList.Count = 1, mit Timer.Start starten
und dann im Timer Eventhandler, wenn alle Items
der ArrayList verarbeitet wurden, wieder stoppen.
Allerdings startet der Timer nicht



Startet der Timer einfach nur nicht oder gibt es
eine Exception ("unzulàssiger threadübergreifender
Zugriff")?

und ich nehme an, es hat damit zu tun, dass der
Event eines FileSystemWatchers in einem anderen
Thread ausgelöst wird.



Da liegst Du mit Deiner Annahme schon ganz richtig.

Wie kann man sowas lösen ?



Du musst das Starten des Timers in eine separate
Prozedur auslagern, die Du dann nicht direkt, sondern
über einen Delegaten aufrufst.
Schau Dir dazu mal das Beispiel

www.gssg.de -> Visual Basic -> VB.net
-> Thread_Invoke

an. Darin wird beschrieben, wie man eine Prozedur
(Sub oder Function) aus einem fremden Thread
heraus über einen Delegaten aufruft um so diesen
Aufruf threadsicher zu machen.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen