Как остановить таймер System.Threading.Timer - C#
Формулировка задачи:
Здравствуйте!
Пытаюсь написать простую программу "Секундомер" с использованием класса System.Threading.Timer. (проект во вложении)
Не могу понять, как правильно остановить таймер. Использую свойство Change:
но при нажатии на данную кнопку первый раз секундомер останавливается. А уже при нажатии второй и следующие разы к значению отображаемого в текстбоксе времени прибавляется 100 мс. Не могу понять вообще, почему это происходит? Ведь данный метод даже в текстбоксе ничего не должен менять.
Если использовать
private void Pause_Click(object sender, EventArgs e) { t1.Change(0, 0); }
System.Timers.Timer
, то там есть метод Старт, Стоп и все понятно и работает.А как в данном случае правильно останавливать этот таймер?
весь код проекта:namespace MyExp { public partial class Form1 : Form { System.Threading.Timer t1; DateTime dt; TimeSpan ts; public Form1() { InitializeComponent(); dt=new DateTime(365, 12, 31, 0,0,0,0); ts = new TimeSpan(0, 0, 0, 0, 0); } private void Start_Click(object sender, EventArgs e) { t1 = new System.Threading.Timer(new TimerCallback(metod2_SekundomerStart), null, 0, 10); } private void Pause_Click(object sender, EventArgs e) { t1.Change(0, 0); } private void reset_Click(object sender, EventArgs e) { ts=new TimeSpan(0, 0, 0, 0, 0); textBox2.Text = ts.ToString(@"hh\:mm\:ss\:ff"); } private void metod2_SekundomerStart(object state) { Action action = delegate { ts = ts.Add(new TimeSpan(0, 0, 0, 0, 10)); textBox2.Text = ts.ToString(@"hh\:mm\:ss\:ff"); }; Invoke(action); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); t1.Change(0, 0); t1.Dispose(); } } class MyClass { } }
Решение задачи: «Как остановить таймер System.Threading.Timer»
textual
Листинг программы
t1.Change(System.Threading.Timeout.Infinite, 0);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д