zu dem Beispiel in der Onlinehilfe habe ich eine Frage: Es geht dabei ja darum, einen Thread von außen zu beenden. Ich hab damit mal ein wenig rumgespielt, stolpere aber über ein Phänomen.
Was ich dabei gemacht habe ist: Die Threadvariable habe ich PUBLIC gemacht. Wenn ein Thread darauf erzeugt werden soll schaue ich vorher nach, ob die noch NIL ist. Wenn nicht rufe ich
beende und NILle ich den. Der neue Thread wird dann auch sauber auf die PUBLIC erstellt.
Wenn ich aber mir in der Workbench das Threads-Fenster anschaue, dann gibt es den Thread dort mehrfach. Halt so oft wie ich den aufgerufen hatte. Alle stehen in der Eventschleife.
Hab ich da einen Gedankenfehler? Oder ist das Sample von Alaska nicht ganz korrekt? Oder spinnt die Workbench?
Abgekürzt sieht das Ganze dann so aus:
Code: Alles auswählen
FUNCTION main
LOCAL i := 0
PUBLIC oThread := NIL
FOR i := 1 TO 10
test()
InKey(5)
NEXT
[Eventschleife]
RETURN NIL
FUNCTION test
IF MEMVAR->oThread <> NIL
MEMVAR->oThread:terminate()
MEMVAR->oThread := NIL
ENDIF
MEMVAR->oThread := myThread():new()
MEMVAR->oThread:start("testfunktion")
RETURN NIL
FUNCTION testfunktion
[Eventschleife]
RETURN NIL