1
Я хочу создать игровой цикл в F #, но у меня проблема с этим.F # Windows Forms game loop
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);()
Если я добавлю async, этот цикл не будет выполнен. Если я сделаю эту синхронизацию цикла, она будет работать вечно.
Что я хочу, чтобы иметь цикл, который будет работать все время во втором потоке и будет перерисовывать игру каждые 30 мс и обрабатывать ключевые события.
ОК ТНХ. Я использовал Async.StartAsTask, потому что у меня был тупик, который выполнялся синхронно. – Luffy
Смысл - я ошибочно предположил, что вы хотите дождаться его завершения в 'startGame'. –