Вы полагаетесь на таймер, и кажется, что на одну и ту же сумму он постоянно неточен.
Почему бы вам не взять момент времени и не сохранить его,
private DateTime startTime;
public Timer()
{
InitializeComponent();
startTime = DateTime.Now;
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
Counter = (DateTime.Now - startTime).ToString();
...
}
Фактически, взяв код, подобный этому, вы узнаете, почему у вас возникли проблемы.Метод ToString показывает счетчик более точно, включая миллисекунды, и выясняется, что таймер срабатывает не каждую 1 секунду, а скорее как каждые 1,01 секунды.
Я получаю такие значения, как
1.008
1.02
1.031
1.03901
и т. Д.
Затем вы можете заменить вышеприведенное на следующее:
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
TimeSpan elapsedTime = (DateTime.Now - startTime);
Counter = string.Format("{0:hh\\:mm\\:ss}", elapsedTime);
И оно будет отформатировано так, как раньше, без миллисекунд.