Zum Inhalt springen

Timer aus einem anderen Thread starten


Iceman346

Empfohlene Beiträge

Vorweg: Ich bin ziemlich unbedarft im Multithreading, also nicht schlagen wenn ich doofe Fragen stelle ;)

Ich habe hier auf der Arbeit ein Programm programmiert, welches Dateien von einem FTP Server herunterläd, diese dann in ein bestimmtes Verzeichnis schiebt, regelmäßig nachschaut ob diese Dateien eine externe Vearbeitung durchlaufen haben und die Ergebnisdateien dann weiterverarbeitet.

Bei Testläufen heute hab ich gemerkt, dass es doch sehr unschön wirkt, wenn das Programm während des FTP Downloads absolut nicht reagiert und so wirkt als wäre es abgestürzt. Also dacht ich mir, verfrachte ich den FTP Downloadprozess in einen eigenen Thread.

Das klappt soweit auch wunderbar, der Download läuft, das Programm reagiert noch auf Mauseingaben und es sorgt nicht für 100% Auslastung auf einem CPU Kern.

Problem ist nun folgendes. Am Ende der Downloadprozedur starte ich normalerweise den Timer der für die Überwachung des Ausgabeverzeichnisses der externen Bearbeitung zuständig ist. Dies passiert einfach über ein

TimerArbeit.Start()

Nach Ende des Downloadthreads wird dieser Timer aber nie wirklich abgearbeitet. Wenn ich den Status abfrage kriege ich zwar die Rückmeldung, dass TimerArbeit.Enabled = True aber die MessageBox die ich beim Start des Timers eingebaut hab erscheint nie und die Dateien werden auch nicht weiterverarbeitet.

Hat jemand nen Tipp wie ich den Timer zum laufen bekomme? Hab mir schon Invokes angeschaut (weil ich aus dem Downloadthread auf eine TextBox der Form zugreifen wollte), aber das gibts für Timer nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab ehrlich gesagt, noch nicht verstanden, was du mit dem Timer anstellen möchtest. Nachdem der Download fertig ist, startest du also einen Timer. Möchstest du, dass für eine bestimmte Zeit etwas getan wird? Ich kenn mich jetzt nicht so wahnsinnig doll mit Visual Basic aus und mit Timern habe ich bisher auch nur wenig gearbeitet. Aber vielleicht ist der System.Threading.Timer besser geeignet für dich.

Vielleicht schilderst du noch mal stichpunktartig, wie du dir den Ablauf vorstellst. Vielleicht wirds dann klarer.

Gruß Kati82

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Timer schaut im Endeffekt im jedem Tick in die Ausgabeverzeichnisse der externen Bearbeitung, vergleicht die dort liegenden Dateien mit den Eingangsdateien und schiebt diese dann entsprechend weiter.

Ich hab das nun momentan erstmal über ne Variable gelöst. Die Downloadprozedur hat sowieso ne Variable gesetzt wenn Dateien in die Bearbeitung gegeben wurden und ich habs jetzt erstmal so geändert, dass der Timer für die Überwachung ständig läuft, aber nur wirklich arbeitet wenn diese Variable gesetzt wurde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...