예제 #1
0
        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);
        }
예제 #2
0
 public void Start()
 {
     SketchEngine.Update(0);
     //RunSketchTask = _UpdataTask();
     RunSketchTask = _RunTask();
 }