自我配置计时器

时间:2017-04-02 10:55:35

标签: c# timer

如何在计时器结束后自动处理和取消计时器?

sender是一个没有方法的随机对象;我无法通过EventHandler动态访问原始计时器。

另一个函数需要检查此计时器是否为空或正在运行(并中断它)。

我可以运行逻辑,例如:

if (timer != null && timer.Enabled)但我宁愿if (timer != null)

我也可以使用虚拟计时器实例化变量,只需检查是否已启用,但我知道如果此变量突然变为空,程序将崩溃。

我应该只使用先前的if语句;记忆中的这些计时器不会加起来吗?

编辑:

static void Main()
{
    Timer timer = null;
    timer = new Timer(5000);
    timer.Elapsed += (sender, e) => {
        var T = (Timer)sender;
        T.Dispose();
        T = null;
        Console.WriteLine(T);
    };
    timer.Start();

    while (true)
    {
        Console.WriteLine(timer);
        System.Threading.Thread.Sleep(1000);
    }
}

1 个答案:

答案 0 :(得分:1)

  

发件人是一个没有方法的随机对象

不是。对象是你的计时器。您只需要将其转换回原始类型:

private void TimerTick(object sender, EventArgs e)
{
    var timer = (Timer)sender;
    timer.Enabled = false;
}