簡體   English   中英

Number 必須是非負數且小於或等於 Int32.MaxValue 或 -1

[英]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).TotalMilliseconds3.600.000.000高於Int32.MaxValue = 2.147.483.647

使用TimeSpan.Duration()獲取時間跨度的絕對值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM