Ejemplo n.º 1
0
        protected override ListenerUpdate OnUpdate()
        {
            var delta       = worker.Delta;
            var updateCount = fts.GetUpdateCount(delta.TotalSeconds);

            var elapsed = worker.Elapsed;

            using (worker.StartMonitoring(targetFrequency))
            {
                timeApp.Update(elapsed, delta);
                using (CurrentUpdater.SynchronizeThread())
                {
                    Scheduler.Run();

                    while (updateCount-- > 0)
                    {
                        timeApp.Update(elapsed - updateCount * delta, delta);
                        Data.Loop();
                    }
                }
            }

            var timeToSleep = TimeSpan.FromTicks(Math.Max(targetFrequency.Ticks - worker.Delta.Ticks, 0));

            if (timeToSleep.Ticks > 0)
            {
                worker.Delta += timeToSleep;
            }

            return(new ListenerUpdate
            {
                TimeToSleep = timeToSleep
            });
        }
Ejemplo n.º 2
0
        private void wizardControl1_SelectedPageChanged(object sender, EventArgs e)
        {
            //if (wizardControl1.SelectedPage == pgAvailableUpdates)

            if (wizardControl1.SelectedPage == pgDownload)
            {
                pgDownload.AllowNext = false;
                CurrentUpdater.UpdaterDownloadComplete        += new Updater.PathEventHandler(CurrentUpdater_UpdaterDownloadComplete);
                CurrentUpdater.UpdaterDownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(CurrentUpdater_UpdaterDownloadProgressChanged);
                pbTotalProgress.Maximum = this.lvAvailableUpdates.CheckedItems.Count;
                lblTotalProgress.Text   = String.Format("{0}/{1} updates downloaded.", 0, pbTotalProgress.Maximum);
                this.UpdateLocalPaths.Clear();

                for (int i = this.lvAvailableUpdates.CheckedItems.Count - 1; i >= 0; i--)
                {
                    pbFileDownload.Value = 0;
                    var item = this.lvAvailableUpdates.CheckedItems[i];
                    lblCurrentDownload.Text = String.Format("Downloading {0}", item.SubItems[0].Text);
                    CurrentUpdater.DownloadUpdater(item.SubItems[4].Text, Path.GetFileName(item.SubItems[4].Text));
                    this.UpdateLocalPaths.Add(Path.Combine(CurrentUpdater.LocalUpdaterLocation, Path.GetFileName(item.SubItems[4].Text)));
                    if (WindowsAPI.Is64bitProcess(Process.GetCurrentProcess()))
                    {
                        this.UpdateLocalPaths.Add(Path.Combine(CurrentUpdater.LocalUpdaterLocation, Path.GetFileName(item.SubItems[5].Text)));
                    }
                }
            }

            if (wizardControl1.SelectedPage.IsFinishPage)
            {
                wizardControl1.FinishButtonText        = "Install";
                wizardControl1.NextButtonShieldEnabled = true;
            }
            else
            {
                wizardControl1.NextButtonShieldEnabled = false;
            }
        }
        /// <summary>
        /// 计算物件的FrameTime
        /// (此方法必须确保计算出来的物件时间是基于命令的真实的有效时间,不能因为Trigger而提前计算,FrameStartTime必须是一次性算好固定的值(否则Scan炸了,理论上也没什么玩意可以变更此参数))
        /// </summary>
        public void CalculateAndApplyBaseFrameTime()
        {
            var commands = CommandMap.SelectMany(l => l.Value);

            if (commands.Count() == 0)
            {
                return;
            }

            var start = commands.Min(p => p.StartTime);
            var end   = commands.Max(p => p.EndTime);

            //Debug.Assert(FrameStartTime==int.MinValue||FrameStartTime==start||this is StoryboardBackgroundObject||Z<0, "目前实现不能再次更变FrameStartTime");

            var need_resort = start != FrameStartTime;

            FrameStartTime = start;
            FrameEndTime   = end;

            if (need_resort)
            {
                CurrentUpdater?.AddNeedResortObject(this);
            }
        }