1
我想在F#中製作遊戲循環,但我遇到了問題。F#Windows窗體遊戲循環
let rec gameLoop (gamePanel:Panel) = async {
(*redraw gemaPanel *)
lock gamePanel (fun() ->
let graphics = gamePanel.CreateGraphics();
let rectangle = new System.Drawing.Rectangle(100, 100, 200, 200);
graphics.DrawEllipse(System.Drawing.Pens.Black, rectangle);
)
return! gameLoop (gamePanel:Panel)
}
let startGame (p:Panel) (p1:Panel) = hide p; Async.StartAsTask(gameLoop p1);()
如果我添加異步此循環不會執行。如果我將這個循環同步,它將永遠運行。
我想要的是讓循環在第二個線程中全部工作,並且每30ms重繪一次遊戲並處理keyevents。
確定THX。我使用Async.StartAsTask,因爲我有死鎖與同步運行。 – Luffy
有道理 - 我錯誤地認爲你想等待它在'startGame'中完成。 –