Значение индикатора выполнения не обновляется из эталонного решения
Привет Друзья,
У меня есть форма windows, которая ссылается на внешнюю библиотеку DLL. Я обращаюсь к одному из общедоступных методов, который предоставляет DLL. Конкретный метод - это большой прогресс, и его статус должен быть указан в индикаторе прогресса. DLL также имеет общедоступную статическую переменную,которая дает статус прогресса. меня беспокоит то, что он не отображается в пользовательском интерфейсе. отображается только конечное значение (100%).
Пример кода приведен ниже
Пожалуйста, помогите определить, где все идет не так.
DLL-код
public static void ProgressBarTest() { for (int i = 0; i < 100; i++) { // Wait 100 milliseconds. Thread.Sleep(100); // Report progress. TestSettings.ProgressValue = i; } } public class TestSettings { public static int ProgressValue { get; set; } }
Что я уже пробовал:
private void button1_Click(object sender, EventArgs e) { // Start the BackgroundWorker. // backgroundWorker1.RunWorkerAsync(); timer1.Enabled = true; RetirementPlan.MainMethods.ProgressBarTest(); }
использование таймера
private void timer1_Tick(object sender, EventArgs e) { progressBar1.Minimum = 0; progressBar1.Maximum = 100; progressBar1.Value = 10; if (progressBar1.Value == progressBar1.Maximum) { // timer1.Stop(); timer1.Enabled = false; progressBar1.Value = 0; progressBar1.Enabled = false; } progressBar1.Value = RetirementPlan.Utils.TestSettings.ProgressValue; double percentage = ((double)progressBar1.Value / (double)progressBar1.Maximum) * 100; lblProg.Text = "Current progress: " + percentage.ToString() + "%"; }
Фоновый Работник
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { // Change the value of the ProgressBar to the BackgroundWorker progress. progressBar1.Value = e.ProgressPercentage; // Set the text. this.Text = e.ProgressPercentage.ToString(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { backgroundWorker1.ReportProgress(RetirementPlan.Utils.TestSettings.ProgressValue); }