删除动态计时器

时间:2013-03-19 05:17:02

标签: c# dictionary timer

我试图在计时器结束前删除它。如果我点击按钮1计时器启动,但如果我在计时器结束前点击按钮2,我仍然会收到来自刻度事件的消息。

我需要有多个计时器,日期作为字典中的键。

有人可以告诉我这里我做错了吗。

private Dictionary<string, System.Timers.Timer> timers = new Dictionary<string, System.Timers.Timer>();

private void button1_Click(object sender, EventArgs e)
{
    string dateTimeString = "19/03/2013 05:11:23"
    var myTimer = new System.Timers.Timer();
    myTimer.Interval = 30000;
    myTimer.Elapsed += new ElapsedEventHandler(MyTimer_Tick);
    myTimer.Enabled = true;
    timers.Add(dateTimeString, myTimer);
}

private void button2_Click(object sender, EventArgs e)
{
    timers.Remove("19/03/2013 05:11:23");
}

public void MyTimer_Tick(object sender, EventArgs e)
{
    MessageBox.Show("Timer tick");
    ((System.Timers.Timer)sender).Dispose();
}

2 个答案:

答案 0 :(得分:4)

试试这个:

 private void button2_Click(object sender, EventArgs e)
    {
      timers[launchTime].Enabled = false;
      timers.Remove(launchTime);
    }

答案 1 :(得分:0)

您应该将计时器设置为null。