[英]Number must be either non-negative and less than or equal to Int32.MaxValue or -1
我收到錯誤 System.ArgumentOutOfRangeException:'Number 必須是非負數且小於或等於 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,則不會引發異常。 但是,在我的應用程序上下文中,我無法控制Interval 值,因為它是從 web 服務更新的。
我考慮過將值強制轉換為 int32 或 int64 類型。 有什么建議么? 我怎么go這個。
文檔指出Interval
必須小於或等於In32.MaxValue
。
TimeSpan.FromSeconds(3600000d).TotalMilliseconds
是3.600.000.000
高於Int32.MaxValue
= 2.147.483.647
使用TimeSpan.Duration()
獲取時間跨度的絕對值。
TimeSpan.FromSeconds(intervalInSeconds).Duration().TotalMilliseconds
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.