Вы не хотите использовать формат DateTime в любом случае, если операция занимает больше минуты (потому что формат "ss"
будет показывать 09
в течение 69
секунд.
Это корректно устанавливает прошедшее время для дрейфа.
DateTime start = DateTime.UtcNow;
timer = new DispatcherTimer(new TimeSpan(0, 0, 0, 0, 1), DispatcherPriority.Normal, delegate
{
DateTime current = DateTime.UtcNow;
TimeSpan elapsed = current - start;
this.Show.Text = elapsed.TotalSeconds.ToString ("00.000 seconds"); // a double converted to string.
}, this.Dispatcher);
Редактировать:
Ваш код не показывает, что вы звоните timer.Start ()
для фактического запуска таймера.
Это также не показывает, как вы не позволяете таймеру собирать мусор: this.elapsedtimer = timer;
Редактировать 2:
TotalSeconds.ToString ("00.000 seconds")
использует эту перегрузку Double.ToString .