Vorab:
Es wäre einfacher für dich, wenn du AddWindowTimer von PB nehmen würdest, und bei jedem Time-Event dann deine Uhr aktuallisierst.
Ansonsten, in der Hilfe steht:
StartDrawing() hat geschrieben:
Wenn "Erstelle threadsicheres Executable" in den Compiler-Optionen aktiviert ist, dann hat jeder Thread seine eigene aktuelle Zeichenausgabe. Dies bedeutet, dass zwei Threads zur gleichen Zeit auf verschiedene Ausgaben zeichnen können.
Die beiden StartDrawings sollten eigentlich beide aufrufbar sein, außer SetTimer_ macht gar kein Thread auf.
Edit: PB-Timer:
Code:
Enumeration
#Window
#Timer
#Gadget
EndEnumeration
Procedure LineAR(X.i, Y.i, Radius.i, Angle.f, Color.i)
LineXY(X, Y, X+Radius*Cos(Radian(Angle)), Y+Radius*Sin(Radian(Angle)), Color)
EndProcedure
OpenWindow(#Window, 0, 0, 300, 300, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
AddWindowTimer(#Window, #Timer, 20)
CanvasGadget(#Gadget, 0, 0, 300, 300)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Timer
Select EventTimer()
Case #Timer
StartDrawing(CanvasOutput(#Gadget))
Box(0, 0, OutputWidth(), OutputHeight(), $FFFFFF)
LineAR(200, 150, 50, 360*ElapsedMilliseconds()/1000, 0)
LineAR(150, 150, 140, 360*Second(Date())/60-90, 0)
LineAR(150, 150, 120, 360*(Minute(Date())+Second(Date())/60)/60-90, 0)
LineAR(150, 150, 90, 360*(Hour(Date())+Minute(Date())/60)/12-90, 0)
StopDrawing()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ForEver