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 }); }
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); } }