private static void TriggerEvent(TileProgressEventHandler evt, object sender, CallbackStates state, MapTilingConfiguration map, string group, int scaleindex, int row, int column, ref bool cancel) { var args = new TileProgressEventArgs(state, map, group, scaleindex, row, column, cancel); evt?.Invoke(sender, args); cancel = args.Cancel; }
private void DisplayProgress(object sender, TileProgressEventArgs args) { if (m_cancel) { args.Cancel = true; } if (this.InvokeRequired) { TileProgressEventHandler action = DisplayProgress; this.Invoke(action, new object[] { sender, args }); } else { label1.Text = string.Format(Strings.CurrentGroupStatus, args.Group, args.Map.ResourceId); tilePG.Value = (int)Math.Max(Math.Min((m_tileCount / (double)m_totalTiles) * (tilePG.Maximum - tilePG.Minimum), tilePG.Maximum), tilePG.Minimum); totalPG.Value = (int)Math.Max(Math.Min((m_grandTotalTileCount / (double)m_grandTotalTiles) * (totalPG.Maximum - totalPG.Minimum), totalPG.Maximum), totalPG.Minimum); var percentage = (int)(((double)m_grandTotalTileCount / (double)m_grandTotalTiles) * 100.0); this.Text = $"{m_origTitle} - ({percentage}%)"; if (m_failCount == 0) { tileCounter.Text = string.Format(Strings.CurrentTileCounter, m_grandTotalTileCount, m_grandTotalTiles, string.Empty); } else { tileCounter.Text = string.Format(Strings.CurrentTileCounter, m_grandTotalTileCount, m_grandTotalTiles, string.Format(Strings.TileErrorCount, m_failCount)); } TimeSpan elapsed = DateTime.Now - m_grandBegin; DateTime finish = DateTime.Now + (new TimeSpan(m_prevDuration.Ticks * m_grandTotalTiles) - elapsed); TimeSpan remain = finish - DateTime.Now; if (finish < DateTime.Now) { finishEstimate.Text = Strings.InsufficientTimePassed; } else { finishEstimate.Text = string.Format(Strings.RemainingTime, finish.ToShortTimeString(), $"{Math.Floor(remain.TotalHours)}:{remain.Minutes.ToString("00")}:{remain.Seconds.ToString("00")}"); } } }