Genau das ist esKaeru Gaman hat geschrieben:....gäbs nicht die möglichkeit, die Close-Message in die Queue zu packen,
dass sie vom WindowEvent() der Hauptschleife verarbeitet wird?
ist das der ansatz mit SendMessage/PostMessage?

Code: Alles auswählen
Global FensterThread.s
Procedure Thread()
Debug "Test 1"
Delay(500)
Debug "Test 2"
Delay(500)
Debug "Test 3"
FensterThread = "FINT"
ProcedureReturn
EndProcedure
Procedure Window1()
If OpenWindow(1,0,0,100,100,"Window 1",#PB_Window_WindowCentered)
If CreateGadgetList(WindowID(1))
TextGadget(2,10,10,100,20,"Test 2",0)
EndIf
Global Thread = CreateThread(@Thread(),0)
If IsThread(Thread)
Else
Fenster3Thread=1
EndIf
EndIf
ProcedureReturn Fenster
EndProcedure
If OpenWindow(0,0,0,200,200,"Window 0",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
TextGadget(1,10,10,100,20,"Test 1",0)
EndIf
Window1()
Repeat
If Thread=1 And IsWindow(1) And FensterThread="FINT"
CloseWindow(1)
EndIf
Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
#FT_FINT = 4711
#FT_RUN = 0
Global FensterThread.l
Procedure Thread()
;...
FensterThread = #FT_FINT
;...
EndProcedure
;...
If Thread=1 And IsWindow(1) And FensterThread = #FT_FINT
;...
Da man nur maximal eine Variable an den Thread übergeben kann und da ich schon eine Variable für die Übergabe reserviert habe, geht das natürlich nicht (Man kann ja leider nicht mehrere Parameter an den Thread übergeben (schön wärs), ich weis, es gibt dafür Alternativen, aber möchte halt nicht so kompliziert machen).Procedure Thread(*close.Long)
...
CreateThread(@Thread(), @close)
schreib mal bitte genauer, wo du da die gefährdung siehst.edel hat geschrieben:Der Code von SimonSimCity schmiert frueher oder spaeter ab.