System.Threading.Timer maximum dueTime value problem

Trips

Well-known member
Joined
Aug 7, 2010
Messages
2,788
According to the documentation the maximum dueTime value is 4294967294 milliseconds. But if you set the timer to this value it fires a callback immediately.<br/>
<br/>
Run the below program and click "c" - the callback will fire immediately, click "o", it will fire after 49 days, click "v" it will fire after 1s. Is this a bug or am I doing something wrong?<br/>
<br/>
using System;<br/>
using System.Threading;<br/>
<br/>
namespace Test<br/>
{<br/>
class Program<br/>
{<br/>
private static bool isRunning;<br/>
<br/>
static void Main(string[] args)<br/>
{<br/>
var t = new Timer(x => Console.WriteLine("Timer callback"), null, Timeout.Infinite, Timeout.Infinite);<br/>
isRunning = true;<br/>
while (isRunning)<br/>
{<br/>
var command = Console.ReadKey();<br/>
<br/>
switch (command.KeyChar)<br/>
{<br/>
case q:<br/>
isRunning = false;<br/>
break;<br/>
case c:<br/>
t.Change(TimeSpan.FromMilliseconds(4294967294), TimeSpan.FromMilliseconds(-1));<br/>
break;<br/>
case o:<br/>
t.Change(TimeSpan.FromMilliseconds(4294000000), TimeSpan.FromMilliseconds(-1));<br/>
break;<br/>
case v:<br/>
t.Change(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(-1));<br/>
break;<br/>
}<br/>
}<br/>
Environment.Exit(0);<br/>
}<br/>
}<br/>
}<br/>

View the full article
 
Back
Top