我有这个扩展方法可以在给定的时间间隔后禁用计时器。是否可以保证 GC 不会破坏 disableTimer 变量(此方法中的局部变量)?或者是否有理由说明为什么这段代码会在一小时后工作。
timer.DisableAfter(1.Hours()) :
public static void DisableAfter(this Timer timer, TimeSpan timeSpan)
{
var disableTimer = new Timer(timeSpan.TotalMilliseconds)
{
AutoReset = false,
};
disableTimer.Elapsed += (sender, e) =>
{
timer.Stop();
disableTimer.Stop();
};
disableTimer.Start();
}