2016-12-22 51 views
0

我試圖給一個定時器間隔分配一個巨大數量(毫秒),但是我在「timer.Enabled = true」這一行發生了這個崩潰!爲計時器間隔分配一個雙倍的值

異常說:

類型「System.ArgumentOutOfRangeException」的未處理的異常出現在mscorlib.dll

其他信息:編號必須是非負且小於或等於的Int32 .MaxValue或-1。

這是我的代碼:

CurrencyTimer.Interval = 2626086891.0; 
    CurrencyTimer.Enabled = true; 
    CurrencyTimer.AutoReset = true; 
    CurrencyTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimerWorker); 
    CurrencyTimer.Start(); 

異常點到這一行:CurrencyTimer.Enabled = TRUE; 謝謝,

+0

你想等'30'天嗎? '2626086891/1000/60/60/24 = 30 ...' –

+0

@ M.kazemAkhgary:and 9 hours,28 minutes ;-) – Joey

+0

可能的重複[爲什麼System.Timers.Timer.Interval的數據類型是a double?](http://stackoverflow.com/questions/11610611/why-is-the-data-type-of-system-timers-timer-interval-a-double) –

回答

4

例外(和the documentation)是相當清楚的間隔必須介於0和int.MaxValue之間。所以,不要指定大於此的值。

對於非常長的定時器間隔,您可能需要在較短的時間間隔內拆分您的間隔並自行計數。我也很好奇,爲什麼你認爲你需要30天的時間間隔定時器...

+0

但間隔類型是雙倍! – Qutaiba

+0

您應該在Windows中使用調度程序,或者使用某種類似的調度程序@Qutaiba –

+0

閱讀文檔有時會有所幫助。 _值必須大於零,並且小於或等於Int32.MaxValue_ – Steve

0

用途:

Threading.Timer 

的構造函數有幾個重載這兩個時間跨度接受或Int64值。除了數據類型的內在限制外,文檔沒有提及數值的限制。