Как Timer остановить? - C#

Узнай цену своей работы

Формулировка задачи:

Программно создаю несколько CheckBox`ов и каждый чекбокс создает новый экземпляр Timer и запускает его. Но как при следующем клике на чекБокс таймеры остановить?
Листинг программы
  1. private List<Control> CheckBox = new List<Control>();
  2. private void Components()
  3. {
  4. int x = 20, y = 30;
  5. for (int i = 0; i < OptionsValue.Count; i++)
  6. {
  7. CheckBox.Add(new CheckBox());
  8. CheckBox[i].Location = new Point(x, y + 6);
  9. y += 30;
  10. CheckBox[i].Name = i.ToString();
  11. CheckBox[i].Text = OptionsValue[i].Remove(0, 0).Remove(OptionsValue[i].IndexOf(":"), (OptionsValue[i].Length - OptionsValue[i].IndexOf(":")));
  12. CheckBox[i].AutoSize = true;
  13. CheckBox[i].Size = new Size(70, 30);
  14. CheckBox[i].Click += ValueCheckBox_Click;
  15. Controls.Add(CheckBox[i]);
  16. }
  17. }
  18. System.Threading.Timer tim;
  19. void ValueCheckBox_Click(object sender, EventArgs e)
  20. {
  21. CheckBox b = (CheckBox)sender;
  22. int bbb = int.Parse(b.Name);
  23. if (b.Checked)
  24. {
  25. tim = new System.Threading.Timer(delegate { OnCheckBoxClick(bbb); });
  26. tim.Change(1000, 2000);
  27. }
  28. else
  29. {
  30. tim.Dispose(); // тут если с одним чекБоксом работат, то работает. Если с нескольким то нет.
  31. }
  32. }
  33. private void OnCheckBoxClick(int bbb)
  34. {
  35. //что то делам.
  36. }
Прошу помощи. За ране Спасибо

Решение задачи: «Как Timer остановить?»

textual
Листинг программы
  1. MyClass my;
  2. for(int i = 0; i < 100; i++)
  3.    my = new MyClass();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут