假设我有一个非重复发生的事件,需要从现在开始X秒,例如超时.直观地说,创建一个System.Timers.Timer,将其间隔设置为X*1000,将其勾选到事件并启动它是有意义的.因为这是一个非经常性的事件,你只需要它一旦你需要在它滴答之后停止计时器.
然而,如果这确实是最好的方式,那么计时器固有地反复出现的事实让我不信任.保存开始的时间是否更好/更准确/更安全,将计时器设置为每秒(或甚至毫秒)滴答,然后勾选系统时间并仅在必要时间过后手动提升目标事件?
如果任何一种方法最好的话,任何人都可以权衡其中(也许还有其他选择我也没有想到).如果我需要等待的时间跨度是以毫秒为单位测量的,那么一种方法是否会比另一种更好?
System.Threading.Timer的此构造函数允许您指定句点.如果将此参数设置为-1,它将禁用定期信令并仅执行一次.
public Timer( TimerCallback callback, Object state, TimeSpan dueTime, TimeSpan period )
只需使用普通计时器,并在经过一次后将其禁用.这应该可以解决你的问题.
system.threading.timer和system.timers.timer都支持这个.