我收到错误系统参数超出范围异常:'数字必须为非负数且小于或等于Int32.MaxValue或-1。参数名:dueTime',当尝试启动计时器时。
下面是使用Visual C#编写的代码:
private System.Timers.Timer timerSync;
private double intervalInSeconds = 3600000d; //updated externally
public static void Initialize()
{
timerSync = new Timer();
timerSync.Interval = TimeSpan.FromSeconds(intervalInSeconds).TotalMilliseconds;
timerSync.Elapsed += TimerSync_Elapsed;
timerSync.Start(); //exception is thrown here...
}
private static void TimerSync_Elapsed(object sender, ElapsedEventArgs e) { }
"我所尝试的"Interval
属性的类型为double,结果值在范围内。如果手动将间隔设置为较低的值(如3600),则不会引发异常。但是,在我的应用程序上下文中,我对间隔值没有太多控制,因为它是从Web服务更新的。
我考虑过将值转换为int 32或int 64类型。有什么建议吗?我该怎么做呢?
2条答案
按热度按时间xiozqbni1#
documentation声明
Interval
必须小于或等于In32.MaxValue
。TimeSpan.FromSeconds(3600000d).TotalMilliseconds
等于3.600.000.000
,大于Int32.MaxValue
=2.147.483.647
vi4fp9gy2#
使用
TimeSpan.Duration()
获取时间跨度的绝对值。