winforms 数字必须为非负数且小于或等于Int32.MaxValue或-1

aij0ehis  于 2023-01-09  发布在  其他
关注(0)|答案(2)|浏览(478)

我收到错误系统参数超出范围异常:'数字必须为非负数且小于或等于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类型。有什么建议吗?我该怎么做呢?

xiozqbni

xiozqbni1#

documentation声明Interval必须小于或等于In32.MaxValue
TimeSpan.FromSeconds(3600000d).TotalMilliseconds等于3.600.000.000,大于Int32.MaxValue = 2.147.483.647

vi4fp9gy

vi4fp9gy2#

使用TimeSpan.Duration()获取时间跨度的绝对值。

TimeSpan.FromSeconds(intervalInSeconds).Duration().TotalMilliseconds

相关问题