Как Timer остановить? - C#
Формулировка задачи:
Программно создаю несколько CheckBox`ов и каждый чекбокс создает новый экземпляр Timer и запускает его. Но как при следующем клике на чекБокс таймеры остановить?
Прошу помощи. За ране Спасибо
private List<Control> CheckBox = new List<Control>();
private void Components()
{
int x = 20, y = 30;
for (int i = 0; i < OptionsValue.Count; i++)
{
CheckBox.Add(new CheckBox());
CheckBox[i].Location = new Point(x, y + 6);
y += 30;
CheckBox[i].Name = i.ToString();
CheckBox[i].Text = OptionsValue[i].Remove(0, 0).Remove(OptionsValue[i].IndexOf(":"), (OptionsValue[i].Length - OptionsValue[i].IndexOf(":")));
CheckBox[i].AutoSize = true;
CheckBox[i].Size = new Size(70, 30);
CheckBox[i].Click += ValueCheckBox_Click;
Controls.Add(CheckBox[i]);
}
}
System.Threading.Timer tim;
void ValueCheckBox_Click(object sender, EventArgs e)
{
CheckBox b = (CheckBox)sender;
int bbb = int.Parse(b.Name);
if (b.Checked)
{
tim = new System.Threading.Timer(delegate { OnCheckBoxClick(bbb); });
tim.Change(1000, 2000);
}
else
{
tim.Dispose(); // тут если с одним чекБоксом работат, то работает. Если с нескольким то нет.
}
}
private void OnCheckBoxClick(int bbb)
{
//что то делам.
}Решение задачи: «Как Timer остановить?»
textual
Листинг программы
MyClass my; for(int i = 0; i < 100; i++) my = new MyClass();