private void Indexer_ProgressChanged(object sender, ProgressChangedEventArgs e) { IndexingProgress ip = (IndexingProgress)e.UserState; if (!String.IsNullOrEmpty(ip.Message)) { textBox.AppendText(ip.Message + Environment.NewLine); } if (!String.IsNullOrEmpty(ip.ETA)) { labelETA.Text = String.Format(Properties.Resources.ETA, ip.ETA); } if (e.ProgressPercentage > 0) { progressBar.Value = e.ProgressPercentage; } if (ip.IndexingState == IndexingProgress.State.Failure) { btnDone.Text = Properties.Resources.CloseIndexingForm; } if (ip.IndexingState == IndexingProgress.State.Finished) { indexingRunning = false; labelETA.Text = Properties.Resources.IndexingDoneETA; DialogResult = btnDone.Enabled ? DialogResult.OK : DialogResult.Abort; Close(); } }
private void ReportProgress(int percentage, IndexingProgress.State status, string message) { int eta; IndexingProgress ip = new IndexingProgress(); ip.IndexingState = status; ip.Message = message; // a naive ETA formula: ETA = ElapsedMinutes * 100 / percentDone - Elapsed if (percentage > 0) { elapsed = (DateTime.Now.Subtract(startTime)); eta = (int)(elapsed.TotalMinutes * 100 / percentage - elapsed.TotalMinutes); if (eta <= 0) { ip.ETA = Properties.Resources.FinishingSoon; } else { TimeSpan remaining = TimeSpan.FromMinutes(eta + 1); ip.ETA = String.Format(Properties.Resources.FinishingInHours, (int)remaining.TotalHours, remaining.Minutes); } } else { ip.ETA = "n/a"; } OnProgressChanged(new ProgressChangedEventArgs(percentage, ip)); }
private void ReportProgress(int percentage, IndexingProgress.State status, string message) { IndexingProgress ip = new IndexingProgress(); ip.IndexingState = status; ip.Message = message; OnProgressChanged(new ProgressChangedEventArgs(percentage, ip)); }