Я использую фоновый поток для запуска секундомера, который я использую на ярлыке, и чтобы увеличить прогресс. Кажется, что таймер точно сохраняет время, но индикатор выполнения не достигает 100%, когда я этого ожидаю.Пробег не попадает на 100%, если ожидалось
Я пытаюсь использовать оба момента времени 35 секунд, и он достигает 100% почти в 36 лет, может ли кто-нибудь сказать мне, почему?
Максимальное значение индикатора выполнения установлено значение 350, значение устанавливается равным 0.
private int currentScore = 0;
Stopwatch swTimer = new Stopwatch();
private void backgroundWorkerTimer_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
TimeSpan elapsedTime = swTimer.Elapsed;
labelTime.Text = String.Format("{0}.{1:%f}", elapsedTime.Seconds, elapsedTime);
progressBarTimer.Increment(1);
}
private void backgroundWorkerTimer_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
backgroundWorkerTimer.ReportProgress(0);
System.Threading.Thread.Sleep(100);
}
}
Непонятно, вы хотите, чтобы индикатор прогресса был заполнен через 35 секунд? И вы получите его после нескольких секунд? – Steve
Да, я хочу, чтобы он был полным после 35 лет, и это почти 36, когда он достигает 100%. – blawford
Я думаю, что этого можно было ожидать. Windows не является оперативной ОС, и каждый раз, когда вы вызываете ReportProgress, есть переключатель потоков. Оперативная работа, поэтому некоторые миллисекунды теряются, и вы наблюдаете поведение. Не эксперт в этой области, поэтому я мог быть доказан неправильно – Steve