【发布时间】:2020-07-08 12:04:41
【问题描述】:
我正在使用System.Timers.Timer 类,我想在已用函数中将其更改为Interval。当我将Elapsed 属性设置为不同的值时,不知何故,经过的函数开始触发并再次触发,尽管计时器的Autoreset 属性设置为false。
我的代码:
var timer = new Timer()
{
Interval = 1000,
AutoReset = false,
};
timer.Enabled = true;
timer.Elapsed += (sender, eventArgs) =>
{
Console.WriteLine("Timer fires");
timer.Interval = 2000;
};
当我只是想更改计时器的后续使用间隔时,代码会一次又一次地触发计时器。
很高兴知道为什么会发生这种情况以及我应该怎么做才能实现所需的行为。
【问题讨论】:
-
这是设计使然:MSDN:如果在计时器启动后设置间隔,则重置计数。例如,如果您将时间间隔设置为 5 秒,然后将 Enabled 属性设置为 true,则在设置 Enabled 时开始计数。如果在 count 为 3 秒时将间隔重置为 10 秒,则在 Enabled 设置为 true 13 秒后第一次引发 Elapsed 事件。 - 您可以尝试使用第二个计时器来解决问题..跨度>