如何在计时器结束后自动处理和取消计时器?
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);
}
}
答案 0 :(得分:1)
发件人是一个没有方法的随机对象
不是。对象是你的计时器。您只需要将其转换回原始类型:
private void TimerTick(object sender, EventArgs e)
{
var timer = (Timer)sender;
timer.Enabled = false;
}