public Task _UpdataTask() { Task task = Task.Run(() => { TimeSpan frameTimer = TimeSpan.Zero; DateTime lastFrameDateTime = DateTime.Now; TimeSpan frameRateTimeSpan = new TimeSpan(0, 0, 0, 0, (int)(1 / DesiredFrameRate * 1000)); while (true) { DateTime startUpdateDateTime = DateTime.Now; lock (UpdateTheadLock) { SketchEngine.Update((float)frameTimer.TotalSeconds); } var updateTimeSpan = DateTime.Now - startUpdateDateTime; var sleepTimespan = frameRateTimeSpan - updateTimeSpan; if (sleepTimespan > TimeSpan.FromMilliseconds(0)) { System.Threading.Thread.Sleep((int)sleepTimespan.TotalMilliseconds); } } }); return(task); }
public void Start() { SketchEngine.Update(0); //RunSketchTask = _UpdataTask(); RunSketchTask = _RunTask(); }