Procedure in bestimmten Zeitintervallen ausführen?
OK, wenns dann zusätzlich keine Probleme mit Threads gäbe, müsste sich das doch so machen lassen, wie ichs mir gedacht habe.
PostMessage erzeugt doch ein Event, dass man in der Hauptschleife abfragen kann, oder? Ein Callback mag ich nicht benutzen.
Dann könnte man auch WaitWindowEvent() nehmen, oder?
PostMessage erzeugt doch ein Event, dass man in der Hauptschleife abfragen kann, oder? Ein Callback mag ich nicht benutzen.
Dann könnte man auch WaitWindowEvent() nehmen, oder?
Windows XP Pro SP2 - PB 4.00Ich bin Ausländer - fast überall
Sorry Hardfalcon, habe mir das natürlich auch angesehen. Mittels Threat wäre da was machbar, aber dann lese ich oft diehardfalcon hat geschrieben:Und weshalb nimmst du nicht meinen Vorschlag (oder gehst zumindest darauf ein)? *beleidigt*
Probleme mit den Threats, deshalb möchte ich das so nicht realisieren.
Nochmal zu den Timer Funktionen aus den PureTools.
Eigentlich funktioniert das ja, aber Windows läuft nach danach seeehr langsam.
Kann es damit zusammenhängen, dass das Abfragen von einem POP3 Server einfach zu lange dauert?
Die Routine also zu lange im Timer verbringt?
Oder liegt es vielleicht an einer Kollision mit der ´bpePOP3´Libary? Die benutze ich nämlich.
Nun habe ich mir heute folgendes gedacht:
Settimer ruft eine Procedure auf, welche wiederum ein Event an das Hauptprogramm sendet.
Somit dürfte bei "EventID.l = WaitWindowEvent()" etwas ankommen und die Schleife wird ausgeführt.
Also etwa so:
Code: Alles auswählen
...
...
Procedure ZeitVorbei()
Auf_Mail_pruefen=#True
-->Schicke nun irgendwie ein Event ans Hauptprogramm--<
EndProcedure
StartTimer( 0, 30000, @ZeitVorbei() )
Repeat
EventID = WaitWindowEvent()
If Auf_Mail_pruefen=#True
Endtimer(0)
Auf_Mail_pruefen=#False
CheckMail()
StartTimer( 0, 30000, @ZeitVorbei() )
Endif
If dies oder das
dann mache dies oder das oder anderes
endif
...
...
until Quit=1
Gruß
Thomas
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Ehrlich gesagt versteheich eure Abneigung gegenüber Timern nicht ganz...
Ich hatte mal einen "Virus" (Hoax) geproggt, der mittels 2 bzw. 3 Threads (je nach ausführung) die Nerven des Benutzers "bearbeitete":
- CD-ROMs zufallsgeneriert ständig öffnen und schliessen
- An die aktuelle Position des Mauszeigers ständig "VIRUS" (mit ständig wechselnder Farbe) schreiben. (Da ich es einfach auf den Desktop male mittels Danilos "DesktopOutput()", ergibt sich eine farbige "mMauszeigerspur")
- Über den internen PC-Speaker ständig kurze Piepsermit wechselnder Frequenz und Länge ausgeben, sodass sich ein undefierbares "Geblibbel" ergibt
Und ich hatte JEDES der drei genannten "Features" jeweils in einem eigenen Thread ohne Probleme laufen. Und dabei liefen die threads allesamt gleichzeitig. Ich habe allerdings nur die Drawinglib, nicht die Sprite-Lib(s) genutzt, da DirectX AFAIK nicht INNERHALB (aber vielleicht "NEBEN"?) Threads funktioniert.
Ansonsten: Macht doch eine Lib/Procedure, die das aktuelle Datum samt Uhrzeit feststellt, und das in Millisekunden umrechnet! Sollte doch funktionieren, oder? (Zugegeben, die Millisekunden dürften schieriger zu realisieren sein...)
cya
Pascal
Ich hatte mal einen "Virus" (Hoax) geproggt, der mittels 2 bzw. 3 Threads (je nach ausführung) die Nerven des Benutzers "bearbeitete":
- CD-ROMs zufallsgeneriert ständig öffnen und schliessen
- An die aktuelle Position des Mauszeigers ständig "VIRUS" (mit ständig wechselnder Farbe) schreiben. (Da ich es einfach auf den Desktop male mittels Danilos "DesktopOutput()", ergibt sich eine farbige "mMauszeigerspur")
- Über den internen PC-Speaker ständig kurze Piepsermit wechselnder Frequenz und Länge ausgeben, sodass sich ein undefierbares "Geblibbel" ergibt
Und ich hatte JEDES der drei genannten "Features" jeweils in einem eigenen Thread ohne Probleme laufen. Und dabei liefen die threads allesamt gleichzeitig. Ich habe allerdings nur die Drawinglib, nicht die Sprite-Lib(s) genutzt, da DirectX AFAIK nicht INNERHALB (aber vielleicht "NEBEN"?) Threads funktioniert.
Ansonsten: Macht doch eine Lib/Procedure, die das aktuelle Datum samt Uhrzeit feststellt, und das in Millisekunden umrechnet! Sollte doch funktionieren, oder? (Zugegeben, die Millisekunden dürften schieriger zu realisieren sein...)
cya
Pascal
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
...ist ja mal wieder mega-ausführlich...PB-Help hat geschrieben:Hinweis: Benutzen Sie innerhalb von Threads kein DirectX (MS Windows Einschränkung)! Wenn Sie auf Grafikdarstellung in Threads angewiesen sind, verwenden Sie stattdessen Images und 2DDrawing.
... oder war's doch sarkasmus?sollte ich wohl ne testreihe fahren...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
