public async void MainLoop() { await appDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { while (true) { //Increment ticks ++ticks; //calculate frame delta to prevent more than 60 frames from occuring every second TimeSpan timeDelta = DateTime.Now - lastFrameTime; delta = timeDelta.TotalMilliseconds; if (delta >= 1000.0 / 60.0) { //Run update function Update(); //Reset last frame time lastFrameTime = DateTime.Now; } //Process any UI events if needed else if (appDispatcher.ShouldYield()) { appDispatcher.ProcessEvents(Windows.UI.Core.CoreProcessEventsOption.ProcessAllIfPresent); } //Wait 4ms if nothing needs to happen else { Task.Delay(4).Wait(); } } }); }