Ausführung eines Timers verzögern

06/04/2009 - 16:01 von Christoph Michalski | Report spam
Hallo,
in meinem Programm startet ein Timer alle 5 Min. eine Prozedur, die Daten
aus der Datenbank abfragt (Dauer der Prozedur je nach situation 3 bis 6
sekunden). Die gleiche Prozedur kann auch manuell vom User gestartet werden,
falls er die Daten sofort aktualisieren will.
Solange die vom Timer gestartete Prozedur làuft, sieht der User ein
Wait-Cursor, er kann also selbst die Prozedur nicht starten. Es gibt aber
manchmal eine umgekehrte Situation: der Timer startet die Prozedur, wàhrend
die gleiche, vom User gestartete Prozedur, noch nicht beendet ist. Dies führt
zur sporadischen Fehlern und sollte auf jeden Fall vermieden werden.
Meine Frage wàre also: wie kann ich den Start vom Timer hinauszögern, oder
die Ausführungen der Prozedur ganz aussetzen, weil sie ja gerade erst vom
User manuell durchführt wurde.
Ich hoffe ich konnte mein Problem verstàndlich genug schialder und hoffe auf
baldige Antwort!
Gruß
Christoph
 

Lesen sie die antworten

#1 Thorsten Doerfler
06/04/2009 - 16:18 | Warnen spam
Christoph Michalski schrieb:
in meinem Programm startet ein Timer alle 5 Min. eine Prozedur, die Daten
aus der Datenbank abfragt (Dauer der Prozedur je nach situation 3 bis 6
sekunden). Die gleiche Prozedur kann auch manuell vom User gestartet werden,
falls er die Daten sofort aktualisieren will.
Solange die vom Timer gestartete Prozedur làuft, sieht der User ein
Wait-Cursor, er kann also selbst die Prozedur nicht starten. Es gibt aber
manchmal eine umgekehrte Situation: der Timer startet die Prozedur, wàhrend
die gleiche, vom User gestartete Prozedur, noch nicht beendet ist. Dies führt
zur sporadischen Fehlern und sollte auf jeden Fall vermieden werden.
Meine Frage wàre also: wie kann ich den Start vom Timer hinauszögern, oder
die Ausführungen der Prozedur ganz aussetzen, weil sie ja gerade erst vom
User manuell durchführt wurde.



Zwei Möglichkeiten:

1. Du deaktivierst den Timer zu Beginn der Prozedur und aktivierst ihn,
wenn sie beendet ist.

2. Du setzt Dir ein Flag m_ProcInProgress zu Beginn der Prozedur. Ist
dieses beim erneuten Aufruf immer noch gesetzt, verlàsst Du diese
wieder ohne eine Aktion auszuführen. Am Ende der Prozedur setzt Du
dieses Fag wieder zurück.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen