Example #1
0
 public JobManager(Configuration config)
 {
     HistoricFPS = new double[config.ProgressMemory];
     Resolution = config.ProgressResolution;
     Job = new RenderJob();
     Job.OutputDirectory = config.OutputPath;
     Job.TempDirectory = config.TempPath;
 }
Example #2
0
        private void JobProgressed(RenderJob job)
        {
            lock (manager.UpdateLock)
            {
                if (manager.UpdateCount % manager.Resolution == 0 && job.State == ProcessState.Running)
                {
                    manager.UpdateCount = 1;
                    Action reportProgress = delegate () {
                        int totalFrames = job.TotalFrames;
                        int completedFrames = job.CompletedFrames;

                        TimeSpan elapsed = DateTime.Now - manager.LastPoll;
                        manager.LastPoll = DateTime.Now;

                        progressBar.Value = (int)(Math.Round((double)(100 * completedFrames) / (double)totalFrames));
                        Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance.SetProgressValue(progressBar.Value, 100);
                        double FPS = (completedFrames - manager.LastFramesCompleted) / elapsed.TotalSeconds;
                        manager.HistoricFPS[manager.HistoricFPSIndex] = FPS;
                        manager.HistoricFPSIndex++;
                        if (manager.HistoricFPSIndex == manager.HistoricFPS.Length)
                            manager.HistoricFPSIndex = 0;

                        double averageFPS = manager.HistoricFPS.Where(n => n != 0).Average();

                        if (averageFPS != 0)
                        {
                            lblRunFPS.Text = Math.Round(averageFPS, 1).ToString("0.0");
                            lblRunRealtime.Text = Math.Round((100 * averageFPS) / (double)nudFPS.Value, 1).ToString("0.0") + "%";

                            TimeSpan ETA = TimeSpan.FromSeconds((totalFrames - completedFrames) / averageFPS);
                            DateTime ETATime = DateTime.Now.Add(ETA);
                            lblRunETA.Text = ETA.ToString("hh'h 'mm'm 'ss's'") + " – " + ETATime.ToString("t");
                        }
                        manager.LastFramesCompleted = completedFrames;
                    };
                    this.Invoke(reportProgress);
                }
                else
                {
                    manager.UpdateCount++;
                }
            }
        }