Seite 3 von 3
Verfasst: 22.02.2005 20:39
von bluejoke
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?
Verfasst: 22.02.2005 20:55
von Team100
@bluejoke
Sollte gehen. Aber bei Threads sollte man immer alles austesten ....

Verfasst: 22.02.2005 23:51
von Skywalker
hardfalcon hat geschrieben:Und weshalb nimmst du nicht meinen Vorschlag (oder gehst zumindest darauf ein)? *beleidigt*
Sorry Hardfalcon, habe mir das natürlich auch angesehen. Mittels Threat wäre da was machbar, aber dann lese ich oft die
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
Meint ihr das könnte funktionieren? Wie schicke ich ein Event aus der Procedure heraus?
Gruß
Thomas
Verfasst: 23.02.2005 11:32
von freedimension
Aber SetTimer kann doch auch eine #WM_TIMER-Nachricht erzeugen, warum willst du das den so umständlich machen?
Verfasst: 24.02.2005 21:20
von hardfalcon
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
Verfasst: 24.02.2005 21:24
von Kaeru Gaman
hardfalcon hat geschrieben:...da DirectX AFAIK nicht INNERHALB (aber vielleicht "NEBEN"?) Threads funktioniert.
och nö... echt jetzt???
Verfasst: 24.02.2005 21:30
von hardfalcon
Ich werde das Gefühl nicht los, dass du das jetzt (zumindest ein wenig) sarkastisch gemeint hast...
cya
Pascal
Verfasst: 24.02.2005 21:46
von Kaeru Gaman

nö, hatte ich eigentlich nicht...
...ich hab noch nicht ausprobiert, DX-geschichten in threads zu packen...
..irgentwie leuchtet mir nicht ein, warum das nicht gehen soll...
Verfasst: 25.02.2005 13:02
von hardfalcon
Es braucht dir ja auch nicht einzuleuchten, es reicht ja, wenns in der Hilfe steht.

Verfasst: 25.02.2005 14:26
von Kaeru Gaman
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.
...ist ja mal wieder mega-ausführlich...

... oder war's doch sarkasmus?
sollte ich wohl ne testreihe fahren...