Timer, Thread und YieldToNextThread

Hallo,

wenn man unter Windows auf ein Menü klickt oder auf den Fensterrahmen, wird ein laufender Thread im Programm gestoppt, ein Timer läuft aber weiter. So wie ich das verstanden habe, läuft der Timer in der Mainloop von der Xojo-Runtime und der Thread nicht.

Wenn man dem Programm einen Timer mit .Period=0 und der Anweisung ‘App.YieldToNextThread()’ hinzufügt, läuft der Thread ebenso weiter. Ist das normal oder gibt es da ungewollte Nebenwirkungen? Ich habe das in einem größeren Programm ausprobiert und da gab es keine Probleme, kann natürlich auch Glück gewesen sein.

Ein Beispielprogramm liegt bereit: TimerThread_2013r1_20130616.zip (8 KB)

Peter

Das ist genau so, wie das Xojo Threadmanagement funktioniert.

Hallo Christian,

deine Antwort verstehe ich so, dass es ok ist dem Timer und YieldToNextThread.
Ich hatte die Befürchtung das ich etwas wie DoEvents gebastelt habe. Das heißt mit YieldToNextThread wird nicht in die Mainloop zurückgesprungen wie mit DoEvents, sondern nur die Threads mit Zeit versorgt, ist das richtig?

Peter

Es ist halt so. Ein Thread ist immer aktiv. Beim Mausklickt, bleibt der Main Thread aktiv und die anderen warten. Der Timer luft aber im Main Thread und wird mit ausgefhrt. Und wenn du da YieldToNextThread aufrufst gibst du halt Zeit an andere Threads ab.